python参数_python参数的介绍
一、函數
1.為什么要使用函數?
減少代碼的冗余
2.函數先定義后使用(相當于變量一樣先定義后使用)
3.函數的分類:
內置函數:python解釋器自帶的,直接拿來用就行了
自定義函數:根據自己的需求自己定義的函數
def func(): #函數名打印出來的是內存地址
'''注釋'''
函數體
4.函數定義都干了些什么事?
只檢測語法,不執行代碼
5.函數就是一段功能,盡量把函數名定義的有意義
6.定義函數的三種方式:
有參數的函數:就是接受外部傳進來的值,進行一系列的運算,最后吧結果返回出來
無參數的函數:通常只是做一下操作而已
空函數:什么事情都不做就是一個空函數(即便是一個空函數,他也會有如下屬性)
7.函數的返回值:可返回任意類型的值
什么時候需要有返回值:具體情況具體分析
什么時候沒有返回值:具體情況具體分析
8.yield和return的區別
yield 停在那呢,掛起了
yield 能返回多次值;return 返回一次值
yield 保存函數狀態
9.函數的調用:函數名加()
10.函數參數
形參:定義函數時括號內寫的參數
形參在定義階段是不占內存空間的,在調用的時候才占用內存空間
實參:在調用函數時括號內傳進來的值
函數參數的具體用法
1.位置參數:
1.按照位置傳參
按位置定義的形參必須要傳值
按位置定義的實參按照位置與形參一一對應的傳
2.按照關鍵字傳數:按照key=value的形式定義的實參,傳的時候與位置沒有關系
def foo(x,y):
pass
foo(1,2) #與形參一一對應
foo(y=2,x=1) #關鍵字參數,指名道姓的傳
foo(1,y=2) #混用位置實參和關鍵字實參
#混著用時:注意:1.不能給同一個形參重復賦值
2.位置實參必須在關鍵字實參的前面
2.默認參數:在定義階段就已經為形參賦值了,意味著在調用階段就可以不為默認參數傳值
如果給默認參數傳值了,就把一開始設置的給替換了。
默認參數定義的場景:大多數都是男性,女性很少時就可以設置個默認,當然還有其他場景
注意:1.默認參數必須在位置形參后面
2.默認參數的值只在函數定義階段生效一次,定義之后的修改不會影響它的值
3.默認參數不要弄成可變類型的,就像是列表,就是一個坑
3.動態參數
可變長度的參數(長度指的是參數的個數):參數*,**
1.*會把多出來的值傳給z,并且以元組的形式返回
2.**會把多出來的值傳給z,并且以字典的形式返回
3.在實參中只要碰到*(),就是打散了
只要是可迭代的就可以用*
*就相當于for循環的操作,遇到*先打散
*args,**kwargs(可傳任意值)
可變長度的參數:從實參的角度推算出形參對應的形式*和**
針對按照位置定義的實參多出來的那部分,會被形參中的*處理,并且保存成元組的形式復制給args
針對按照關鍵字定義的實參多出來的那部分,會被形參中的**處理,并且保存成字典的形式復制給kwargs
1 # 1.舉例一、
2 def foo(x,y,*args):
3 print(x,y)
4 print(args)#args相當于(3, 4, 5, 6, 7, 8, 9),那么*args相當于*(3, 4, 5, 6, 7, 8, 9)
5 print(args[0])
6 print(*args) # 加個*就是把上面的元組給打散了,就還是和原來傳實參的時候的形式一樣了
7
8 foo(1,2,3,4,5,6,7,8,9)
9 foo(1,2,3,*(4,5,6,7,8,9)) #也可以這樣傳 就相當于foo(1,2,3,4,5,6,7,8,9)
10
11 # 2.舉例二、
12 def bar(x,y,z):
13 print(x,y,z)
14 bar(1,2,3)
15 bar(*['b','a','c']) #bar('b','a','c')
16 bar(*'hel') #bar('h','e','l')
17 bar(*{'a':1,'b':2,'c':3}) #bar('b','a','c')
18 # 強調:如果實參中出現了*和**,第一時間打散了去看
19
20 # 3.舉例三、
21 def foo(x,y,**kwargs):
22 print(x,y)
23 print(kwargs) #{'c': 3, 'd': 4, 'f': 6} 吧多余的元素以字典的形式返回了
24 print(*kwargs) #輸出c d f ,就是把字典打散了
25 #
26 # foo(1,y=2,c=3,d=4,f=6)
27
28 # 4.舉例四、
29 def index(x,y,z=1):
30 print(x,y,z)
31 def wrapper(*args,**kwargs):
32 index(args,kwargs)
33 index(*args, **kwargs) #就是打散了
34 wrapper(1,2,3)
35 wrapper(1,2)
36 wrapper(x=1,y=2)
37 wrapper(1,y=2)
38 '''可變長度的參數:從實參的角度推算出形參對應的形式 * 和 **
39 針對按照位置定義的實參冗余的部分,會被形參中的 * 保存成元組的形式賦值給args
40 針對按照關鍵定義的實參冗余的部分,會被形參中的 ** 保存成字典的形式賦值給kwargs
41 強調:
42 如果實參中出現了 * 和 **,第一時間打散了去看。
43 '''
強調:
如果實參中出現了*和**,第一時間打散了去看
11.命名關鍵字參數(了解):在定義階段,在*之后定義的形參稱為命名關鍵字參數
特點是:在調用階段,該參數必須以關鍵字的形式被傳值
def foo(x,y,*,a,b):
print(x)
print(y)
print(a)
print(b)
foo(1,2,b=20,a=10)
控制函數調用的時候必須以關鍵字傳參的時候就用命名關鍵字傳參
總結
以上是生活随笔為你收集整理的python参数_python参数的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么判断尾插小板坏了
- 下一篇: 用python绘制图形_使用Python