Python 関数の概要

関数

コンセプト:
完成したプロジェクトでは、いくつかの関数が繰り返し使用される可能性があります. この時点では、これらの関数を関数としてカプセル化し、それらを使用するときに関数を直接呼び出します.
本質:関数のカプセル化は
関数です。利点: 1. コード構造を簡素化し、コードの再利用の度合いを高めます2. 変更、保守、およびデバッグが便利です


1. 関数の作成と呼び出し

使用法:

'''
def(关键字) 函数名():
	函数体
	return 返回表达式
函数名() #调用
'''
#函数名可以大小写字母、下划线开头,不能数字开头
def func():
	a=1
	b=2
	print('这是返回值%d'%(a+b))
func()

###############################
这是返回值3

次に、関数のパラメーター

コンセプト: 関数のパラメータは括弧内のもので、パーソナライズできます

def func(grade):    #括号里的参数近似相当于变量
	print('我的成绩为:'+grade)
func('100')

################################
我的成绩为:100

3. 関数の戻り値

コンセプト: 関数の実行結果が結果ではなくデータを返す必要がある場合は、関数内で次のキーワードを使用します: return+指定された戻り値

def func(a,b):
	return a+b
print(func(1,2))	

################################
3

: 関数内で return を使用する場合は、print()を呼び出す必要があります。呼び出さないと、何も出力されません。

第四に、関数のパラメータ

重要性: 関数にパラメーターがない場合、関数は非常に単一で厳密になり、それに応じて単一の関数を実行します 1.
仮パラメーターと実パラメーター
の概念: 呼び出しの観点から、パラメーターは仮パラメーター (形式パラメーターparameters パラメータ) と実際のパラメータ (実際のパラメータ)。
仮パラメータ:関数の作成および定義時の括弧内のパラメータ
実パラメータ:関数が呼び出されたときに渡されるパラメータまたは値

str1 = '满分'
def func(grade):  #小括号里面的grade就是形参
	return grade
print(func(str1))  #调用时候的参数就是实参

#####################################
满分

2.キーワード パラメータ
の概念: 通常のパラメータは位置パラメータと呼ばれます. 呼び出すときに、不用意に間違った順序でパラメータを渡すと、期待と矛盾する結果が生じることがあります。たとえば:

def func(fruit,color):
	print(fruit,'这个水果是',color,'色')
func('红','apple')	

####################################
红 这个水果是 apple 色

キーワード引数を使用:

def func(fruit,color):
	print(fruit,'这个水果是',color,'色')
func(color='红',fruit='apple')	

##############################
apple 这个水果是 红 色

3.デフォルト パラメータ
の概念: デフォルト パラメータは、仮パラメータを設定するときに仮パラメータに割り当てられる値です (キーワード パラメータとは異なります)。

def func(fruit='Apple',color='是红色'):
	print(fruit,color)
func()

################################
Apple 是红色	

func(fruit='Pear',color='是黄色')#在传递参数过程中,替换了默认的值

#####################################
Pear 是黄色

4.位置可変パラメーター (可変パラメーター)
の概念:特定の状況で使用されるパラメーターの数がわからない場合は、パラメーターの前にアスタリスク( * ) を追加します。

def func(*test):
	print('test有%d个参数'%len(test))
	print('最后一个参数是',test[-1])
	print(type(test))
	print(test)
func(1,2,2,4,5,5,3)

#################################
test有7个参数
最后一个参数是 3
<class 'tuple'>
(1, 2, 2, 4, 5, 5, 3)

5. キーワード変数パラメーター () の
概念: この仮パラメーターは、任意の数の受信キーと値のペアのパラメーター (キーワードの実際のパラメーター) を受け入れることができ、受け入れられたパラメーターは辞書に編成されます。

def func(**kwd):
	print(kwd) #kwd以字典的方式组织传入的关键字实参
func(fruit='apple',price=10)	

######################################
{
    
    'fruit': 'apple', 'price': 10}

注:位置変数パラメーター(args) とキーワード変数パラメーター(**kwd) を一緒に使用する場合、位置変数パラメーター (args) を最初に宣言し、キーワード変数パラメーター (**kwd) を最後に宣言する必要があります。

五、機能の範囲

1.関数のプロセス
理解: Python では、プロセスのない関数しかありません。

def func():
	print(123)
print(func())

###############################
123
None
#没有return默认返回一个None	

2. 戻り値の
理解: Python は、シーケンスを使用して複数のタイプの 1 回限りの戻り値をパッケージ化できます。

def func():
	return 1,2,3,4
print(func())

###############################
(1, 2, 3, 4)

3.変数のスコープを
理解する: 変数のスコープは変数の可視性に似ています

def func(gra,num):
	count_grade=gra*num
	return count_grade

final_grade=func(80,5)
print(final_grade)
print(count_grade)

###################################
400
NameError: name 'count_grade' is not defined

Note : エラーの理由は 'count_grade' がfunc 関数内で定義されており、関数内でのみ有効であり、関数外で呼び出された場合は無効であるため、定義されていないためです. この種の変数はローカル変数と呼ばれます
ローカル変数に対応するのはグローバル変数で、グローバル変数のスコープはローカル変数のスコープよりも大きくなっています
example1:

def func(gra,num):
   count_grade=gra*num
   print(grade)
   return count_grade

grade=80
final_grade=func(80,5)
print(final_grade)

###########################
80
400

例2:

def func(gra,num):
   count_grade=gra*num
   grade=100
   print('in_grade:',grade)
   return count_grade

grade=80
final_grade=func(80,5)
print('out_grade:',grade)
print(final_grade)

#############################
in_grade: 100
out_grade: 80
400

:ここでの関数内の grade は、python 自身が作成した新しいローカル変数であり、外部の grade とは関係ありません. 4.
global キーワード
の概念: 上記の例に示すように、python が保護することがわかります。グローバル変数であり、この保護はコードのメンテナンスに影響を与えることがあるため、グローバルキーワード ソリューションがあります。

def func(gra,num):
   count_grade=gra*num
   global grade
   grade = 100
   print('in_grade:',grade)
   return count_grade

grade=80
final_grade=func(80,5)
print('out_grade:',grade)
print(final_grade)

##################################
in_grade: 100
out_grade: 100
400

6. 組み込み関数とクロージャ

1.組み込み関数
の概念: 関数内に別の関数を作成できるようにする

def func1():
	print('func1')
	def func2():
		return 'func2'
	return func2()
print(func1())	

############################
func1
func2

注: func2 は func1 の内部関数であるため、そのスコープは func1 関数本体にもあり、外部から呼び出すとエラーが報告されます.
2. クロージャの
概念: 内部関数では、外部スコープの変数( non -global scope )リファレンスの場合、内部関数はクロージャーと見なされ、クロージャーは関数の重要なコンポーネントです

def func1(x):
	def func2(y):
		return x*y
	return func2 #这里不用括号

#调用格式1
a=func1(10)
print(a(5))
#调用格式2
print(func1(10)(5))

#########################
50
50	

: 埋め込みと同じ意味で、func2 を直接呼び出すことはできず、エラーが報告されます。

おすすめ

転載: blog.csdn.net/weixin_45717984/article/details/105539923