Python研究ノート(5)-関数の基底と関数のパラメーター

関数を学ぶ目的は何ですか?関数は何をしますか?
関数の学習の目的:①関数の学習に失敗すると、次のことが起こりやすくなります。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(180100)  #正确

デフォルトパラメータ

デフォルトのパラメータを渡すと、渡したパラメータを使用できます。入力結果が渡されない場合は、デフォルトのパラメータに従って実行されます。必要なパラメータの後に配置する必要があります。そうしないと、エラーが報告されます。

例:

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')]

おすすめ

転載: blog.csdn.net/qq_46485161/article/details/115308562