Python入門入門編(4):関数の基礎知識

関数

1.機能紹介

1.1. 関数とは:

  • 実際、これはコード セグメントであり、このコードは繰り返し実行でき、関数を介してコードを再利用できます

  • 関数は自発的に実行することはできず、呼び出す必要がある場合にのみ実行できます

 

パイソンモジュール

  • Pythonファイルはモジュールです

 

1.2、機能分類

  • グローバル関数: モジュールで直接定義された関数はグローバル関数です

  • ローカル関数: 関数内で定義されたサブ関数。そのような関数はローカル関数です

  • 無名関数: ラムダ関数とも呼ばれ、実際には式です

  • メソッド: メソッドも関数ですが、関数は特性データ型にバインドする必要があります。

1.3、関数の定義と呼び出し

関数を定義する

1. def は英語の define の略語です
2. 関数名は関数カプセル化コードの機能を表現できるもので、後続の呼び出しに便利です
3. 関数名の命名は、識別子の命名規則に従う必要があります。
    文字、アンダースコア、数字で構成できます。数字で
    始めることはできません
    。キーワードと同じ名前

def 函数名():
	语句
	语句
    ...

関数を呼び出す

def f1():                  # 定义一个名为 f1的函数
    print("1")    
    print("ok")
    print("2")


print("start process...")

f1()                       # 调用函数 f1

print("over")

1.4、関数の実行結果

  • 関数の出力: 関数で print を使用して結果を出力し、直接表示できます。

    • 出力用: print

    • 出力結果:直接印刷可能

  • 関数の戻り値: 関数内で return を使用して 1 つ以上の結果を返します. この結果を使用して受け取ることができます. return が実行されると, return の後のコードは実行されません, つまり, 関数は直接終了し、メイン プログラムに戻って実行を継続する

    • 戻る: 戻る

    • 戻り値: メインプログラムで受け取ることができます. 複数の値が返された場合, 複数の値がタプルとして保存されます.

def userdate():                               # 定义一个名为 userdate 的函数
    num1 = int(input("请输入第一个数字:"))
    num2 = int(input("请输入第二个数字:"))
    if num1 > num2:                           # 如果num1 > num2 函数返回值为num1
        return num1
    else:
        return num2                           # 如果num1 < num2 函数返回值为num2


print(userdate())                             # 输出函数的返回值

 

1.5 関数のドキュメント

  • 一般に、各関数には、関数の機能と使用方法を説明するドキュメントが必要です。

  • 関数のドキュメントを表示する方法

函数名.__doc__

 

変数のスコープ

  • ローカル変数: モジュールで定義された [メイン プログラム内の変数]、有効なスコープは、メイン プログラムと関数内を含む Python ファイル全体です。

  • ローカル変数: 関数内で変数を定義します。デフォルトの有効なスコープは関数内のみです

  • 関数の実行が終了すると、関数内のローカル変数はシステムによって再利用されます

  • 異なる関数で同じ名前のローカル変数を定義できますが、それぞれの使用は影響しません

  • 組み込み変数: python 自体で定義

予防:

  • 変数のスコープが小さいほど、優先度が高くなります

  • ローカル変数の優先順位 > ローカル変数

  • グローバル変数ではなくローカル変数を変更する

  • 変数を見つけるプログラムのプロセスは、まず最も近い変数を見つけ、存在する場合はそれを直接使用し、存在しない場合は上位層まで検索します。

  • デフォルトでは、関数内の変数はローカル変数ですが、キーワード: global を使用して、変数をグローバルとして明示的に指定できます

x = 1     # 全局变量
y = 3     # 全局变量

def f1():
    x = 2         # 局部变量
    z = 5         # 局部变量
    global y      # 全局变量【将局部变量y转换为全局变量】
    y = 0         # 为转换后的全局变量赋值 0
    print(x,y,z)

print(x,y)     # 输出 x 是 1,y 是 3

f1()           # 将 x 改为 2,z 设置为5 ,然后输出x y z  也就是输出 2  3  5

print(x,y)     # 输出 x 和 y,  此时 x 是 1,y 是 0

三、関数伝達パラメータ

3.1 関数のパラメータは仮パラメータと実パラメータに分けられる

  • 定義中の括弧内のパラメーターは、「仮パラメーターと呼ばれるパラメーターを受け取るために使用されます。
  • 呼び出し時の括弧内のパラメーターは、「実際のパラメーターと呼ばれる関数に渡すために使用されます

 形参

定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
def 函数名(变量):
	代码

パラメータのデフォルト値:

  • 関数にパラメーターを渡す必要があるが、呼び出し時に渡されない場合、エラーが報告されます。

引数 

调用函数时,小括号中的参数,是用来把数据传递到函数内部用的
def printWellcome(name="jack"):     # name = “jack“ 这是为参数设置默认值
    print("hello %s"%(name))

userInput1 = input("请输入姓名:")

printWellcome()            # 调用函数,没有向函数传递参数,此时函数会使用参数的默认值

printWellcome(userInput1)  # 调用函数,向函数传递参数,此时函数会使用传递进来的参数

キーワードに基づいてパラメーターを渡す

  • 要件: 関数が定義されるときのパラメーターの名前は、呼び出されるときのパラメーターの名前と同じでなければなりません。

# 定义函数
def fun1(p1,p2,p3="nul"):         # 此时参数的名字分别是p1  p2  p3

# 调用函数
fun1(p1=xx,p2=xx)                 # 此时必须明确指定p1=x  p2=x  p3=x

 デモ

def fun1(p1,p2,p3="nul"):
    if p3 == "nul":
        print("姓名是 %s, 年龄是%s"%(p1,p2))
    else:
        print("姓名是 %s, 年龄是%s, 地址是%s" % (p1, p2, p3))

uname = input("name:")
uage = input("age:")
uaddr = input("addr:")
fun1(p2=uage,p1=uname)

 3.2 パラメータの受け渡し

関数のパラメータ受け渡しは、基本的には実パラメータから仮パラメータへの代入操作です。Python では「すべてがオブジェクト」であり、代入操作はすべて「参照代入」です。したがって、Python でのパラメーターの受け渡しは、「値渡し」ではなく「参照渡し」です。特定の操作には次の 2 種類があります。

    1. 元のオブジェクト自体に直接作用する「可変オブジェクト」に対して「書き込み操作」を実行します。
    2. 「不変オブジェクト」に対して「書き込み操作」を実行すると、新しい「オブジェクト空間」が生成され、この空間が新しい値で埋められます。(他の言語の「値渡し」効果を果たしますが、「値渡し」ではありません)

1. 変数オブジェクトには、辞書、リスト、セット、カスタム オブジェクトなどがあります。 2.

2. 不変オブジェクト: 数値、文字列、タプル、関数など。

 1. 変更可能なオブジェクトへの参照の受け渡し: 渡されたパラメーターは変更可能なオブジェクト (たとえば、リスト、辞書、その他のカスタムの変更可能なオブジェクトなど) であり、オブジェクトへの参照が実際に渡されます。関数本体でオブジェクトの新しいコピーを作成する代わりに、渡されたオブジェクトを直接変更できます。
2. 不変オブジェクトへの参照の受け渡し 渡されたパラメーターは不変オブジェクト (例: int、float、string、tuple、Boolean 値) であり、実際のオブジェクトは引き続き渡されます。「割り当て操作」では、不変オブジェクトは変更できないため、システムは新しいオブジェクトを作成します。

4番目に、任意のパラメーターを渡します

  • 魔法の割り当て

method1 def fun1 (*パラメータ)

  • このメソッドは、任意の数のパラメーターを受け入れるために使用され、結果はタプルです

def fun1(*p1):
    print(p1)      # p1用于接收和保存传递进来的多个参数,多个参数是以元组的形式保存的


fun1("a","b")      # 向函数传递多个参数
# 输出结果是('a', 'b')

 メソッド 2 def fun2 (* *パラメーター)

  • このメソッドは、任意の数のパラメーターを受け入れるために使用され、結果は辞書です

def fun1(**p1):
    print(p1)      # p1用于接收和保存传递进来的多个参数, 数据是以字典的形式保存的

fun1(name="tom", age="18", addr="hebei")
# 输出结果是{'name': 'tom', 'age': '18', 'addr': 'hebei'}

 

 

 

Guess you like

Origin blog.csdn.net/weixin_67281781/article/details/123573856