python函數基礎

函數基礎

函數的作用

函數就是包裹一部分的代碼,實現某一個功能,達成某一個目的,而且當這段代碼如果使用或者重復使用的時候,只需要很簡單的調用即可,大大減少了代碼的維護難度。

滕州ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯建站的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

函數的特點

可以反復調用,提高代碼的復用性,提升開發效率,便于維護管理。

函數的定義和調用

函數的定義要使用到關鍵字def,且函數定義不會執行函數中的代碼,而是需要調用函數才會執行。

定義方法

定義函數在關鍵字def后面加上函數名,然后后面加上括號,括號中可以酌情選擇是否寫上參數,在對應的作用域中寫上代碼。

# 語法:
def function_name([parameter0],[parameter1]):
    code0
    code1
    code2
    ……
調用方法

直接使用定義好的函數的函數名加上括號,括號中寫上對應的參數,就會執行作用域中的代碼。

# 語法:
funciton_name([parameter0],[parameter1])

注意,只要函數只有在調用的時候才能執行其中的代碼

定義一個沒有參數的函數

# 定義函數
def func():
	print('this is function')

# 調用函數
func()  # this is function

帶有參數的函數

# 定義函數
def func(name):
	print('this is ' + name)

# 調用函數
func('msr')  # this is msr

命名

函數的命名和變量命名的規則是一樣的,推薦使用小駝峰命名法。

參數

函數的參數,是配合函數運算的值。在函數中的代碼使用參數的時候,就和使用變量的方法是一樣的。

定義函數的時候的參數叫做形式參數,形參就就相當于定義變量的變量名,填的參數只是為了確定功能,所以叫作形式參數;調用函數的時候的參數叫做實際參數,實參就相當于定義變量的時候的值,這個時候的參數具有實際的作用,所以叫作實際參數。

參數的分類

形參 實參
普通形參 普通實參
默認形參 關鍵字實參
普通收集形參
命名關鍵字形參
關鍵字收集形參

遵循原則

函數調用的時候的參數要和定義的時候一一對應。

普通形參和普通實參

普通形參就是定義函數時在括號內直接寫參數名,普通形參沒有賦予值,所以在函數調用的時候必須要對普通形參賦予值,否則報錯。

調用函數的時候直接寫上的值就是普通實參。

# 直接寫上參數名就是普通形參
def myName(name):
	res = 'My name is %s' % name
	print(res)


my_name = 'msr'
# 調用函數的時候直接寫上的值就是普通實參
myName(my_name)  

# 參數要一一對應,所以調用函數的時候不寫參數就會報錯
myName()    # error

默認形參

默認形參就是在定義函數的時候,參數就指定了一個值,換句話說默認形參就是一個帶有默認值的普通形參。在調用函數的時候如果給默認參數指定了值,默認參數的實際值就是調用處的值,如果沒有賦予值,默認參數的值就是定義處的值。

# 定義函數的時候帶有默認值的就是默認參數
def myName(name='msr'):
   res = 'My name is %s' % name
   print(res)


# 調用處指定值
my_name = 'msr'
myName(my_name)  # My name is msr

# 調用處不指定值
myName()  # My name is msr

當普通參數和默認參數他同時存在的時候,默認參數必須要在普通參數的后面,否則報錯。

def myName(name, name1='msr'):
	print(name, name1)

myName('wxd',)  # wxd msr

關鍵字實參

普通實參就是在調用函數的時候直接填寫值,這樣的賦值不能打亂順序,要按照形參定義的順序來寫。
關鍵字實參是對具體的某個參數賦值,這樣就可以打亂參數的順序使用,但是全部使用關鍵字實參必須將所有普通形參全部使用關鍵字實參,否則報錯

def name(name1, name2, name3, name4='沒有名字'):
   print(name1, name2, name3, name4)

# 普通實參
name(111, 222, 333, 444)    # 111 222 333 444

# 關鍵字實參
name(name2=444, name1=222, name3=111, name4=333)    # 222 444 111 333

普通實參和關鍵字實參一起使用的時候,關鍵字實參也是不能寫在普通實參的前面的。

注意要區分默認形參和關鍵字實參,默認形參和關鍵字實參在語法上是一模一樣的,都是給某個參數一個固定的值,且都必須跟在普通形參和實參之后。但是區分的方法很簡單,默認形參是形式參數,在定義函數時的就是默認形參,關鍵字實參是實際參數,在調用函數時的就是關鍵字實參。

普通收集參數

函數的實參要和形參一一對應,如果有普通實參沒有對應的形參,普通收集參數就可以用來專門收集多余的普通實參,在普通形參的前面加上一個* 就是普通收集參數,普通收集參數一般習慣命名為 args 。收集的數據會變成一個元組。

def func(name, *args):
	print(name)  # msr
	print(args)  # (1, 2, 3, 4, 5, 6)

func('msr', 1, 2, 3, 4, 5, 6)

關鍵字收集參數

關鍵字收集參數和普通收集參數的作用和普通收集參數的租用基本相同的,只不過關鍵字收集參數收集的是關鍵字實參,關鍵字收集參數在普通形參的前面加上 ** 符號,一般命名為kwargs,收集的數據變成一個字典。

def func(*args, **kwargs):
	print(args)
	print(kwargs)

func(1, 2, 3, 4, name='msr', age=18, sex=0)

'''
結果:
(1, 2, 3, 4)
{'name': 'msr', 'age': 18, 'sex': 0}
'''

普通收集參數和關鍵字參數一起可以收集所有的實參

# 收集所有的實參
def func(*args, **kwargs):
   print(args)
   print(kwargs)

命名關鍵字參數

命名關鍵字參數就是在函數調用的時候,必須使用關鍵字實參進行賦值的形參。

定義命名關鍵字參數的兩種方式:
def function_name(parameter, *, parameter2)

參數2是命名關鍵字, * 后面的參數為命名關鍵字

**def function_name(*args, parameter, kwargs)

parameter是命名關鍵字,普通收集參數后面的普通形參是命名關鍵字參數

# 方法一, * 本身不是一個參數:
def func(*, a, b, c, d):
	print(a, b, c, d)   # A B C D

func(a='A', b='B', c='C', d='D')
# 方法二:
def func(*args, a, b, c):
	print(a, b, c)  # 3 4 2

func(a=3, b=4, c=2)

符號 * 和 ** 的使用

* 和 ** 在函數的定義處,用來做收集操作,打包

* 和 ** 在函數的調用處,用來做打散操作,解包

* 在定義處用來收集普通實參,成為元組;在調用處用來打散容器成為普通實參,如果是字典,只獲取鍵。

** 在定義處用來收集關鍵字實參,成為字典;在調用處用來打散字典(只能是字典,且鍵為字符串)成為關鍵字實參。

def func(*args):
   print(args)


lst = [1, 2, 3, 4, 5, 6]

# 如果將列表直接作為參數放入,lst就是一個參數
func(lst)   # ([1, 2, 3, 4, 5, 6],)

# 如果在lst前面加上 * ,就將列表列表解包,每一個元素都是一個參數
func(*lst)  # (1, 2, 3, 4, 5, 6)

相當于將列表中的元素一個個拿出,當成一個個普通實參給函數進行調用,**也是一樣的。

def func(**kwargs):
   print(kwargs)


dct = {'one': 1, 'two': 2, 'three': 3}

# ** 可以解包字典
func(**dct)  # {'one': 1, 'two': 2, 'three': 3}

return關鍵字

return可以返回自定義函數的值,叫做返回值,可以把函數最終運算出的結果返回到函數的調用處。

  1. return可以返回任何的python數據,六大數據類型、對象、類、函數……,只需要將要返回值的寫在return的后面即可;
  2. 定義return返回值返回的就是定義的值,返回返回None;
  3. 函數在執行到return的時候跳出函數,函數中剩余的代碼不會在執行;

不指定return返回值,返回None。

# 定義函數
def func():
	print('hello')

# 調用函數
# 函數執行打印'hello',沒有定義返回值,返回None給res
res = func()
print(res)

'''
結果:
hello
None
'''

定義返回值。

# 定義函數
def func():
	print('hello')
	return 'motherland'

# 調用函數,返回'motherland'給res
res = func()
print(res)

'''
結果:
hello
motherland
'''

執行return之后,函數后面未執行的代碼不再執行。

# 定義函數
def func():
	print(1)
	return 2
	print(3)

# 調用函數
func()

'''
結果:
1
'''

函數名的使用

python中的函數可以像變量一樣,動態創建銷毀,當作參數傳遞,作為值返回,叫第一類對象,其他語言功能有限。

  1. 函數名是一個特殊的變量,可以作為變量使用和賦值;

    def func():
    	print('hello motherland')
    
    var = func
    
    var()   # hello motherland
    
  2. 函數可以像變量一樣銷毀

    def func():
    	print('hello motherland')
    
    del func
    
    func()  # error,不存在
    
  3. 函數名可以作為容器類型數據的元素;

    def func0():
    	print('func 0')
    def func1():
    	print('func 1')
    def func2():
    	print('func 2')
    
    lst = [func0, func1, func2]
    
    for i in lst:
    	i()
    
    '''
    結果:
    func 0
    func 1
    func 2
    '''
    
  4. 函數名可以作為函數的參數;

    def func1():
    	print('我是 func 1')
    
    def func2(function):
    	function()
    
    func2(func1)    # 我是 func 1
    
  5. 函數名可以作為函數的返回值;

    def func1():
    	print('我是 func 1')
    
    
    def func2(function):
    	return function
    
    res = func2(func1)
    
    res()   # 我是 func 1
    

函數的說明文檔

在定義函數的時候,在函數的上方使用單行注釋、或者在下方使用多行注釋可以為函數注釋說明。

可以使用__doc__方法或者是help函數查看。

使用help函數查看在函數的注釋說明。

# 這是我的第一個函數
# 函數的注釋在上方
def func():
    pass

print(help(func))

'''
結果:
Help on function func in module __main__:

func()
    # 這是我的第一個函數
    # 函數的注釋在上方

None
'''

使用 __doc__方法查看。

def func():
	"""
	這是我的第二個函數
	函數的注釋在下方
	"""
	pass

# 使用
print(func.__doc__)

'''
結果:

	這是我的第二個函數
	函數的注釋在下方
	
'''

總結

形參在一起使用的時候要哪找順序。

普通參數 -> 默認參數 -> 普通收集參數 -> 命名關鍵字參數 -> 關鍵字收集參數

網頁名稱:python函數基礎
網站地址:http://m.kartarina.com/article20/dsoghjo.html

成都網站建設公司_創新互聯,為您提供企業建站營銷型網站建設網站收錄Google品牌網站設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 高清无码中文字幕在线观看视频| 亚洲精品无码专区久久久| 人妻无码αv中文字幕久久| 亚洲AV无码一区二区乱孑伦AS| 最新无码A∨在线观看| 国产AV无码专区亚洲A∨毛片| 无码精品视频一区二区三区| 亚洲精品久久久久无码AV片软件| 色欲aⅴ亚洲情无码AV| 亚洲av永久无码精品表情包| 亚洲av成本人无码网站| 亚洲乱亚洲乱少妇无码| 亚洲AV永久无码精品一百度影院| 最新亚洲春色Av无码专区| H无码精品3D动漫在线观看| 亚洲成无码人在线观看| 国产V片在线播放免费无码| 日韩精品无码久久久久久| 最新亚洲人成无码网站| 亚洲VA中文字幕无码毛片 | 无码av免费一区二区三区| 精品国精品无码自拍自在线| 亚洲成av人片不卡无码久久| 久久精品无码一区二区无码| 黄A无码片内射无码视频| AV无码久久久久不卡网站下载| 亚洲中文久久精品无码| 激情射精爆插热吻无码视频| 日韩爆乳一区二区无码| 国产成人无码精品久久久性色| 亚洲Aⅴ在线无码播放毛片一线天| 国产精品亚韩精品无码a在线| 日产无码1区2区在线观看| 亚洲精品无码专区在线播放| 亚洲av无码片在线播放| 国产精品亚韩精品无码a在线 | 亚洲真人无码永久在线观看| 亚洲精品色午夜无码专区日韩| 亚洲精品无码专区2| 亚洲国产成人精品无码久久久久久综合| 中文无码热在线视频|