1.區域變數和全域變數
在函式外定義的不可變資料型別,在函式里面是可讀不可寫
在函式外定義的可變資料型別,在函式里面可讀可寫
不可變型別傳入函式,進行的操作不會影響到外面的變數
但是當我們宣告一個變數為全域變數后,進行的操作會影響到函式外的變數
可變資料型別,傳入和直接使用都會改變原本的資料
不可變資料型別 直接使用是可讀不可寫的
傳入后的操作不會對函式外的變數造成影響
宣告為全域變數后,可讀可寫,并且會對函式外的變數造成影響
# 1.在函式外定義的不可變資料型別 # 在函式里面是可讀不可寫 b = 1 def func(): print(b) # 可以運行成功 # b += 1 # 報錯 # print(b) func()

# 2.不可變型別傳入函式,進行的操作不會影響到外面的變數 # 但是引數可以傳進來 b = 1 def func(b): b += 1 print(b) func(b) # 2 print(b) # 1

# 3.在函式外定義的可變資料型別 # 在函式里面可讀可寫 l1 = [1, 2, 3] def func(): l1.append(6) print(l1) func()

# # 4.global # # 只能在一個區域的情況下使用 # # 當一個函式外的不可變資料型別在函式內讀和寫并對原本的變數修改時,用global宣告 b = 1 def func(): # global 宣告一個變數為全域變數 global b b += 1 print(b) func() # 2 # 但是當我們宣告一個變數為全域變數后,進行的操作會影響到函式外的變數 print(b) # 2

# 例子 my_money = 10000 def add(money: int): # 形參money """獎金加錢""" global my_money my_money += money print(f'當前余額{my_money}') def reduce(money: int): # 形參money """罰款減錢""" global my_money # 注意這里也要宣告!!! my_money -= money print(f'當前余額{my_money}') add(1000) # 實參1000 add(2000) reduce(4000) reduce(666)

2.函式傳參
# 1.形參與實參
# 形參和實參的個數需要一樣
# 實參形參的位置順序必須一樣
def func(name, age): # 形參 print(f'我的名字是{name},我的年齡是{age}') my_name = '小明' my_age = 20 func(my_name, my_age) # 實參

# 2.關鍵字引數
# 關鍵字傳參 關鍵字不需要加引號
# 優點:可以打亂引數的傳入順序
# 需要注意:關鍵字引數一定全都要寫到最后面
# 不過一般是如果寫關鍵字就都寫關鍵字了
def func(money, name, age): # 形參 print(f'我的名字是{name},我的年齡是{age}\n' f'我的錢是{money}') my_name = '小明' my_age = 20 func(100, age=my_age, name=my_name) # 實參

# 3.默認引數
# 可寫可不寫
# 不寫則使用默認引數
# 寫了則使用傳入的引數
# 默認引數一定要寫在最后,否則報錯
def func(name, age, money=1000, gender='男'): # 默認引數gender print(f'我的名字是{name},我的年齡是{age}\n' f'我的錢{money},我的性別{gender}') my_name = '小明' my_age = 20 func(my_name, my_age, 100, '女') # 實參

# 4.不定長引數 不定長關鍵字引數
# *args 也可以是*a *xxx
# **kwargs 也可以是**a **xxx
# key word args
# 加了一個星號 * 不定長引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數,
# 加了兩個星號 ** 的引數會以字典的形式匯入,存放已命名的變數引數,
def func(name, *args): print(args) # 是元組 print(*args) # 包本身 一般不會使用*args而使用args print(f'{name}菜里面的調料有{args}') func('小明', '番茄醬', '辣椒粉', '孜然粉') def func1(name, **kwargs): print(kwargs) # print(**kwargs) # 報錯 print(f'{name}菜里面的調料有{kwargs}') func1('小明', t1='番茄醬', t2='辣椒粉', t3='孜然粉')

今日作業
# 定義一個模擬ATM機操作的場景 # 1)需要一個存錢和取錢的函式 # 2)設定全域默認資金1000 # 3)呼叫存錢函式,存放800元,并將操作后函式將余額列印出米(1000+800= 1800) # 4)呼叫取錢函式,取錢500元,并將操作后函式將余額列印出來(1800-500=1300) money = 1000 def add_money(money1: int): """存錢函式""" global money # 宣告money為全域變數 money += money1 print(f'余額是{money}') def reduce_money(money2: int): global money # 注意這里也要宣告!!! money -= money2 print(f'余額是{money}') add_money(800) # 呼叫存錢函式,存放800元 reduce_money(500) # 呼叫取錢函式,取錢500元

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539440.html
標籤:其他
上一篇:OpenGL 透明度
下一篇:C++入門級基礎知識匯總
