Python基礎知識學習05 函式再認識

2021-10-09 19:22:40 字數 4016 閱讀 4137

區域性變數與全域性變數的介紹前文已作詳細介紹,這裡我們簡單描述即可。

區域性變數:定義在函式體內部的變量,它只在函式體內部生效。如果在函式外部訪問則會立即報錯。

全域性變數:指的是在函式體內、外都能生效的變數。如需在函式體內部修改全域性變數,先global 關鍵字宣告a是全域性變量,再進行賦值即可。

步驟:1、定義全域性變數 ;

2、定義兩個函式 ;

3、函式一修改全域性變數(注意:需先global 關鍵字宣告全域性變量,再作修改);函式二訪問全域性變數。

**例項:

# 1、宣告全域性變數  2、定義兩個函式  3、函式一修改全域性變數;函式二訪問全域性變數

# 1. 定義全域性變量

glo_num = 0

def test1():

"""函式1修改全域性變數"""

global glo_num

glo_num = 100

def test2():

"""函式2去呼叫test1函式中修改後的全域性變數"""

print(glo_num) # 100,因為是呼叫了test1的結果

print(glo_num) # 0因為修改的變數沒執行

# 2. 呼叫test1函式,執行函式內部**:宣告和修改全域性變量

test1()

# 3. 呼叫test2函式,執行函式內部**:列印

test2()

步驟:1.定義兩個函式:函式

一、函式二;

2.先得到引數一的返回值9;

3.將函式一的返回值作為引數傳入函式二(函式二有形參)。

**例項:

def test1():

return 9

def test2(num):

print(num)

# 1. 儲存函式test1的返回值

result = test1()

# 2.將函式返回值所在變數量作為引數傳遞到test2函式

test2(result) # 9

在之前的學習中已知return的作用是:

① 負責函式返回值;

② 退出當前函式,導致return下方(函式體內部)的所有**不執行。

若乙個函式需要return返回多個值時需注意:

① 可以以  return a, b  的寫法返回多個資料,預設是元組型別。

② return後面可以連線列表、元組或字典,以返回多個值。

def return_num():

# return 1, 2 # 預設是元組型別

# return後面可以直接書寫:元組、列表、字典,以此來返回多個值

# return [1, 2] # [1, 2],列表型別

return # ,字典型別

result = return_num()

print(result)

位置引數:呼叫函式時根據函式定義的引數位置來傳遞的引數。

值得注意的是:傳遞和定義引數的順序及個數必須一致,即:呼叫函式時傳入的實參順序與個數必須與定義時的形參一致。如果當傳入個數和定義不一致會報錯;當順序和定義不一致時會導致資料無意義。

關鍵字引數:呼叫引數時通過「鍵=值」形式加以指定。可以讓函式更加清晰、容易使用,同時也清除了引數的順序需求。

注意:函式呼叫如果有位置引數時,位置引數必須在關鍵字引數的前面,但關鍵字引數之間不存在先後順序。

# 關鍵字引數

def user_info(name, age, gender):

print(f'您的名字是, 年齡是, 性別是')

user_info('lisa', age=18, gender='女')

user_info('tom', gender='男', age=20) # 關鍵字之間不分先後順序

# user_info(gender='男', age=20, 'tom') 位置引數必須寫在關鍵字的前面,否則會報錯

預設引數:也叫預設引數,用於定義函式,為引數提供預設值,呼叫函式時可不傳該預設引數的值(注意:所有位置引數必須出現在預設引數前,包括函式定義和呼叫)。

注意:函式呼叫時,如果為預設引數傳值則修改預設引數值;否則使用這個預設值。

# 預設引數

def user_info(name, age, gender='男'):

print(f'您的名字是, 年齡是, 性別是')

user_info('tom', 20) # 沒有為預設引數傳值,使用預設值「男」

user_info('lisa', 18, '⼥') # 為預設引數傳值,使用這個值,即修改了預設值

不定長引數也叫可變引數。用於不確定呼叫的時候會傳遞多少個引數(不傳參也可以)的場景。此時,可用包裹(packing)位置引數,或者包裹關鍵字引數,來進行引數傳遞,會顯得非常方便。

包裹位置傳遞和包裹關鍵字傳遞,都是乙個組包的過程。

不定長位置引數:收集所有位置引數,返回乙個元組。(*args)

def user_info(*args):

print(args)

# ('tom',)

user_info('tom')

# ('tom', 18)

user_info('tom', 18)

注意:傳進的所有引數都會被args變數收集,它會根據傳進引數的位置合併為乙個元組(tuple), args是元組型別,這就是包裹位置傳遞。

不定長關鍵字傳遞:收集所有關鍵字引數,返回乙個字典。(**kwargs)

def user_info(**kwargs):

print(kwargs)

# user_info(name='tom', age=18, id=110)

回顧之前所學知識:return返回多個資料值時,可以是乙個元組、字典和列表。但是若想將資料逐個拆成變數去檢視,就需要用到拆包。

def return_num():

return 50, 100

num1, num2 = return_num()

print(num1) # 50

print(num2) # 100

# 資料字典拆包:對字典進行拆包,變數儲存的資料是字典的key值

# 先準備字典然後進行拆包

dict1 =

# 因為dict1中有兩個鍵值對,拆包的時候用兩個變數去接收資料

a, b = dict1

#查詢k值

print(a) # name

print(b) # age

#查詢v值

print(dict1[a]) # tom

print(dict1[b]) # 18

如有交換變數的需求,可通過如下方法進行交換。但需要注意的是:等號左側的變數名數量必須與右側的資料個數相等。

a, b = 10, 20

a, b = b, a

print(a) # 20

print(b) # 10

可變型別與不可變型別指的是:資料能夠直接進行修改,如果能直接修改那麼就是可變型別,否則是不可變型別。

可變型別有: 列表 字典 集合

不可變型別: 整型 浮點型 字元串 元組

利用id()可知,在python中的值是靠引用來傳遞來的。並且,引用可以通過實參傳入到函式裡面。

Python學習基礎知識

1 python中的布林運算 1 python把0 空字串 和none看成 false,其他數值和非空字串都看成 true 2 python直譯器在做布林運算時,只要能提前確定計算結果,它就不會往後算了,直接返回結果。2 python中的list 新增 2 用list的 insert 方法,它接受兩...

Python基礎知識學習

anaconda環境配置 anaconda pycharm環境 參考 直譯器 參考 和 python入門 anaconda和pycharm的安裝和配置 print and input print hello,world x 12 print x s hello y len s print the l...

python基礎知識學習

在互動式環境中表示上文的輸出 python 列印 print 3d 0.2f year,principla id 獲取python中元素位址的方式 map 接收兩個引數,乙個是函式,乙個是序列,把傳入的函式依次作用於序列的每個引數,並把結果作為新的序列返回。filter 接收兩個引數,乙個是函式,乙...