関数を学ぶ目的は何ですか?関数は何をしますか?
関数の学習の目的:①関数の学習に失敗すると、次のことが起こりやすくなります。1。複雑さが増す; 2。組織構造が十分に明確でない; 3。読みやすさが悪い; 4。コードの冗長性; 5。スケーラビリティが悪い
②関数を学習した後、次のことができます。 :1。関数を使用すると、コードの記述と再利用の効率が向上します。2。関数は、名前が付いたコードブロックであり、使用時に調整できます。3。関数の使用、プログラムの記述、読み取り、テスト、および修復が容易になります。美しく美しい
関数関数:独立関数のコードブロックは関数にカプセル化されているため、複数回の使用の効果を実現し、コードの量を減らし、冗長な構造も明確になり、コードの一貫性を維持します
関数の定義
関数標準フォーマット
def 函数名(参数):
函数接口
函数体
return 返回值
関数名の命名規則:文字、数字、アンダースコアで構成され、変数の命名規則と一致します
戻り後に任意の式を返すことができますが、代入ステートメントにすることはできません
関数呼び出し
函数名(参数)
注:呼び出す前に定義する必要があります。
例:
def func(a,b): #传值(形参)
print('开始了')
result = a - b
return result
print('--结束--') # 遇到return 后面的都不会执行了 代表函数结束了 返回值都出来了呀 问题:函数里可有有多个renturn 吗(选择执行的时候可有有多个)
a = func(10,5) #传值
print(a)
结果:
5
関数パラメーター
- 正式なパラメーター:関数が呼び出されない場合は意味がありません。呼び出す場合はパラメーターを渡す必要があるため、必須パラメーターとも呼ばれます。
- 実際のパラメータ:仮パラメータの位置と1対1で対応しているため、位置パラメータとも呼ばれます。これは必須であり、欠落している場合はエラーが報告されます。
必須パラメーター
パラメータは任意のタイプのオブジェクトを受け入れることができます
いくつか書く場合は、いくつかの必須パラメーターを渡す必要があります
例:
def func(a,b):
print('开始了')
result = a - b
return result
print('结果%d'%result)
print('--结束--')
func(180) # 报错
func(180,100) #正确
デフォルトパラメータ
デフォルトのパラメータを渡すと、渡したパラメータを使用できます。入力結果が渡されない場合は、デフォルトのパラメータに従って実行されます。必要なパラメータの後に配置する必要があります。そうしないと、エラーが報告されます。
例:
def func(a,b=160):
print('开始了')
result = a - b
return result
result = func(180)
print('result:%d'%result)
print('--结束--')
执行结果:
result:20
可変長パラメーター
質問:10個の必要なパラメーターを渡すと、10個を定義できます。100個が必要な場合はどうなりますか?したがって、可変長パラメータの概念があります。
①関数を定義するときに、仮パラメータの前に1を追加する*
と、仮パラメータがすべての実パラメータを取得し、すべての実パラメータがタプルに保存されます。
*a
場所のすべての実際のパラメーターを受け入れ、これらの実際のパラメーターをタプルに保存します(パッケージング)
例:
def f1(*args):
print(args)
li = [1, 2, 3]
f1(4, 5, 6)
f1(li, 2333)
f1(*li) #注意li是一个列表所以要加*解包
执行结果:
(4, 5, 6)
([1, 2, 3], 2333)
(1, 2, 3)
②正式**
パラメータは他のキーワードパラメータを受け取ることができます。これらのパラメータは辞書に保存されます。辞書のキーはパラメータの名前であり、辞書の値はパラメータの値です。
**
正式パラメータは1つだけです。そしてそれはすべてに書かれなければなりませんパラメータの終わり
例:
def func(**kwargs): # 关键字传参
print(kwargs)
func(a=1,b=2,c=3) #键等于值的形式
执行结果:
{
'a': 1, 'b': 2, 'c': 3}
def func(*args,**kwargs):
print(args,kwargs)
func(1,2,3,4,5,a = 1,b = 3)
执行结果:(1, 2, 3, 4, 5) {
'a': 1, 'b': 3}
キーワードパラメータ
キーワードを使用して対応する必要なパラメータを見つけるため、1対1で対応する必要はありません。
例:
def func(str1, str2):
print(str1, str2)
# 观察这两个调用的结果是否一致?
func(str1='hello', str2='你好')
func(str2='hello', str1='你好')
执行结果:
hello 你好
你好 hello
高度な組み込み関数
Pythonですべての組み込み関数を表示する:dir(__builtins__)
戻り値はリストです
関数 | 効果 |
---|---|
len | 長さ |
最大 | マックス |
分 | 最小 |
ソート済み | ソート |
逆転 | 取り寄せ |
和 | 和 |
置き場 | バイナリ |
10月 | オクタル |
16進数 | 16進数 |
言葉 | ASCII対応値 |
chr | 値はASCIIに対応します |
exec | 文字列型で保存されたPythonコードを実行する |
フィルタ | フィルタを実行すると、反復可能な各オブジェクトが関数を実行し、条件を満たすオブジェクトを取得し、満たさないオブジェクトを削除します。 |
地図 | 反復可能なパラメーターの場合、関数を適用して結果を返します |
zip | ペア |
a = [1,2,3,4]
print(len(a))
结果:4
min(a) 小
max(a) 大
sorted(a) 排序
reversed(a) 返序
sum(a) 求和
基数変換とASCII変換
bin(12) 2进制
oct(8) 8进制
hex(11) 16进制
ord('a') # 97 # ascii
ord('A') # 65
chr(97) # 'a'
chr(65) # 'A'
enumerate()enum
li = ['a','b','c']
a = list(enumerate(li,100))
print(a)
输出结果:[(100, 'a'), (101, 'b'), (102, 'c')]
for i ,j in enumerate(li):
print(i,j)
输出结果:
0 a
1 b
2 c
a = dict(enumerate(li,100))
print(a)
输出结果:
{
100: 'a', 101: 'b', 102: 'c'}
a = '1+2+3'
eval(a) 转换成表达式执行
eval('a=1') # 报错
# 将字符串str当成有效的表达式来求值并返回计算结果。
b = 1
'b = 1'
exec()
i = 3
j = 2
exec('um = i + j') # 返回值永远是空
print(um)
执行结果:5
#ans变量并没有显式的定义,但仍然可以在print函数中调用。这是exec语句执行了"um = i + j"中的代码,定义了sum变量。
i = 3
j = 2
exec('print(i + j)')
执行结果:5
a = 'for i in range(5):print(i)'
exec(a)
执行结果:1 2 3 4 5
フィルタ()
def func(x):
return x > 10
li = [2,5,8,10,22,44]
#list(filter(func,li)) #过滤函数,过滤条件
print(list(filter(func,li)) )
执行结果:
[22, 44]
地図()
def func2(num):
return num * 10
list1 = [1,2,3,4,5]
print(list(map(func2,list1)))#函数对象 , 可迭代对象
执行结果:
[10, 20, 30, 40, 50]
zip()
t1 = [1,2,3,4]
t2 = ['a','b','c','d']
print(list(zip(t1,t2)))
执行结果:
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]