程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python基礎之函數的定義及用法

編輯:Python

前言

小伙伴們好久不見呀,最近因為工作原因一直沒有時間靜下來寫文章,今天呢筆者給大家來介紹一下python行數的定義和調用,函數的參數、行數的作用域、內置函數。廢話就不多說了直接開始吧。

一、函數的定義和調用

1.函數的作用

對特定的一些功能進行封裝,提高代碼的重用率,進而提升開發的效率,格式:

def 函數名()
# 函數體

2.函數名的命名規范

1)可以由字母、數字及下劃線(_)組成,但不能用數字開頭,且不能使用python中的關鍵字。

2)函數命名的風格: 單詞之間下劃線隔開(python中函數命名推薦這種風格), 大駝峰小駝峰寫法 ,如:UserName、userName英文單詞首字母大寫。

3.函數的返回值:return

語法:return 表達式

1)函數的返回值是由return來決定的,return後面寫什麼,函數的返回值就是什麼

2)如果函數中沒有return,那麼函數的返回值默認為 None

3)return 後面沒有任何內容,返回值也是None

4)函數要返回多個數據,可以在return後面,每個數據之間用逗號隔開,調用函數之後接收到的是個元組形式的數據

注意:return的作用除了返回結果外,也可以用於結束函數的運行,只要函數中執行到return,就直接返回內容,跳出函數,return後面的代碼就不會執行

4.調用函數

函數名(),示例如下:

def func():
print('python666')
return "abc", 4444
print("99999999999999999999") # 該行不會被執行
res = func()
print(res)

運行結果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
python666
('abc', 4444)
Process finished with exit code 0

二、函數的參數

1.函數形參和實參

定義的參數稱為:形參

調用實際傳遞的為:實參

2.參數傳遞的兩種形式:

位置參數:按位置順序進行傳遞

關鍵字參數:通過關鍵字指定傳給某個參數

# 位置參數(按位置順序進行傳遞)
def add_num(a, b, c): # a,b是形參,沒有真正的值,用於接收實參
return a + b - c
res1 = add_num(67, 12, 1) # 此時傳入的67,12是實參
print(res1)
# 關鍵字參數(通過關鍵字指定傳給某個參數)
res2 = add_num(b=34, a=12, c=11)
print(res2)
# 參數混用時,位置參數寫最前面,關鍵字參數寫在後面,不能重復傳
res3 = add_num(30, c=12, b=12)
print(res3)

運行結果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
78
35
30
Process finished with exit code 0

3.函數定義的三種形參:

  • 必需參數 如:def add_num(a, b, c) ,a,b,c三個參數都必須要傳
  • 默認參數(缺省參數) 如:def add_num(a, b, c=99) ,c是默認參數,可以傳,可以不傳(不傳時直接使用c=99)
  • 不定長參數:如:def add_num(a, b, *args, **kwargs) ,其中a和b是必需參數,*args 可以不傳,也可以傳多個,它接收必需參數、默認參數完之外的位置參數,以元組的形式保存,**kwargs 可以不傳,也可以傳多個,接收必需參數、默認參數之外的關鍵字參數,以字典的形式保存
def test(a, b, c, *args, **kwargs):
print("a的值", a)
print("b的值", b)
print("c的值", c)
print("*args的值", args)
print("**kwargs的值", kwargs)
va1 = test(11, 22, 33, 4, 3, 2)
va2 = test(11, 5, 6, 7, g=33, k=22, f=12)
print(va1, va2)

運行結果(有None是因為函數中沒有返回值,調用了兩次函數因此打印了兩個None):

C:\software\python\python.exe D:/myworkspace/test/test/test.py
a的值 11
b的值 22
c的值 33
*args的值 (4, 3, 2)
**kwargs的值 {}
a的值 11
b的值 5
c的值 6
*args的值 (7,)
**kwargs的值 {'g': 33, 'k': 22, 'f': 12}
None None
Process finished with exit code 0

擴展:不定長參數可以使用*對元組(列表也可以,但一般不用)進行拆包,**可以對字典進行拆包,拆包原理如下:

# 拆包
def func():
return 11,22,33 # 當返回結果有多個值時,會以元組的形式返回
c1 = func()
print(c1) # 返回的是一個元組(11,22,33)
a,b,c =func() # 可以通過變量把返回的元組進行拆包,接收對應的值,a接收了11,b接收了22,c接收了33
print(a,b,c) # 返回對應的元素11,22,33

運行結果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
(11, 22, 33)
11 22 33
Process finished with exit code 0

拆包在自動化測試中有很大的作用,如果不理解,可以動手多敲幾遍,以下是拆包示例:

def func(a, b, c):
print('這是', a)
print('這是', b)
print('這是', c)
# 利用*、**分別對元組、字典拆包:只能用在函數調用時使用
# 對元組進行拆包
func(*(1, 2, 3))
print('-------分割線-------')
tu = (4, 5, 6)
func(*tu)
print('-------分割線-------')
# 對字典進行拆包, 注意**kwargs接收的是接收必需參數、默認參數之外的關鍵字參數
# 因此字典的鍵要與函數的形參一致
dic = {'a': 88, 'b': 90, 'c': 91}
func(**dic)

運行結果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
這是 1
這是 2
這是 3
-------分割線-------
這是 4
這是 5
這是 6
-------分割線-------
這是 88
這是 90
這是 91
Process finished with exit code 0

三、函數的作用域

1.全局變量

直接定義在py文件(即模塊)中的變量,叫全局變量,在該文件中任何地方都可以使用

2.局部變量

在函數內部定義的變量,叫做局部變量,只能在該函數內部使用,函數外部無法使用

3.聲明局部變量

關鍵字:global 在函數內部聲明全局變量。

變量的查找過程:由內到外(先找函數自身的,沒有再去外面找)。

如果要在外部使用函數內部定義的局部變量,需要聲明該變量,簡單來說就是告訴程序,這個變量在這個模塊內都能使用。

name = "張三" # 定義一個全局變量
def func():
# global a # 如果要聲明全局變量,要加上這句
a = 100 # 定義一個局部變量
print(a)
print(name)
func() # 調用函數
print("------分割線-----")
print(name) # 全局變量哪裡都能使用
print(a) # 這是一個局部變量,打印a運行會報錯說a沒有被定義,如果要使用a就要聲明a為全局變量
print("------分割線-----")
aa = 10
def func():
print(aa) # 變量的查找過程:由內到外(先找自身的,沒有再去外面找)
func()

運行結果(因為報錯了,所以後面的aa沒有打印出來,只要聲明全局變量就不會報錯):

C:\software\python\python.exe D:/myworkspace/test/test/test.py
100
張三
------分割線-----
張三
Traceback (most recent call last):
File "D:/myworkspace/test/test/test.py", line 12, in <module>
print(a) # 這是一個局部變量,打印a運行會報錯說a沒有被定義,如果要使用a就要聲明a為全局變量
NameError: name 'a' is not defined
Process finished with exit code 1

四、python內置函數

內置函數就是python編程語言中預先已經定義的函數,直接調用即可,常用的內置函數如下:

  • len():獲取 列表\字符串\元組\字典 中的元素總數量(數據的長度)
  • eval():識別字符串中的python表達式
  • zip(): 聚合打包
  • max():獲取數據中元素的最大值
  • min():獲取數據中元素的最小值
  • sum():對元素進行求和

總結

今天的文章就到這裡了喲,喜歡的小伙伴可以點贊收藏評論加關注喲。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved