區域性變數與全域性變數的介紹前文已作詳細介紹,這裡我們簡單描述即可。
區域性變數:定義在函式體內部的變量,它只在函式體內部生效。如果在函式外部訪問則會立即報錯。
全域性變數:指的是在函式體內、外都能生效的變數。如需在函式體內部修改全域性變數,先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 接收兩個引數,乙個是函式,乙...