04 Python中的全域性變數和函式的高階

2021-10-01 11:45:04 字數 2520 閱讀 1634

通過global關鍵字把區域性變數轉換為全域性變數

num =

10def

demo1()

:print

("demo1"

+"-"*50

)# global 關鍵字,告訴 python 直譯器 num 是乙個全域性變數

global num

num =

100print

(num)

defdemo2()

:print

("demo2"

+"-"*50

)print

(num)

# demo1() # 輸出 100

demo2(

)# 輸出10

print

("over"

)

def

measure()

:"""返回當前的溫度"""

print

("開始測量..."

) temp =

39 wetness =

10print

("測量結束..."

)return temp, wetness

temp, wetness = measure(

)print

(temp)

print

(wetness)

解法 1 —— 使用其他變數

# 解法 1 - 使用臨時變數

c = b

b = a

a = c

解法 2 —— 不使用臨時變數

# 解法 2 - 不使用臨時變數

a = a + b

b = a - b

a = a - b

解法 3 —— 異或運算

a = a ^ b

b = a ^ b

a = a ^ b

解法 4 —— python 專有,利用元組

a, b = b, a

def

demo

(num, num_list)

:print

("函式內部**"

)# num = num + num

num += num

# num_list.extend(num_list) 由於是呼叫方法,所以不會修改變數的引用

# 函式執行結束後,外部資料同樣會發生變化

num_list += num_list # 注意: python中的列表+=是在原有集合上操作,要區別於scala

print

(num)

print

(num_list)

print

("函式**完成"

)gl_num =

9gl_list =[1

,2,3

]demo(gl_num, gl_list)

print

(gl_num)

print

(gl_list)

def

demo

(num,

*args,

**kwargs)

:print

(num,

type

(num)

)print

(args,

type

(args)

)print

(kwargs,

type

(kwargs)

)demo(1,

2,3,

4,5, name=

"小明"

# 需要將乙個元組變數/字典變數傳遞給函式對應的引數

gl_nums =(1

,2,3

)gl_xiaoming =

# 沒有拆包,會把兩個元素全部傳給tuple, 而字典裡面是空的

demo(gl_nums, gl_xiaoming)

# 進行了拆包,會把相應的元素傳遞給tuple和dict

python中全域性變數

在python中,全域性變數一般有兩種使用方式 第一種 是在乙個單獨的模組中定義好,然後在需要使用的全域性模組中將定義的全域性變數模組匯入。第二種 直接在當前的模組中定義好,然後直接在本模組中通過global宣告,然後使用 具體的方法如下所示 第一種 solr url def tt global s...

PHP中全域性變數和超全域性變數

自定義全域性變數的作用域為當前的指令碼檔案的任意位置 函式或者方法啊之類的 但是要想用它們必須先執行一下 global variable語句 variable為要使用的全域性變數 或者是使用 global 變數名字 來呼叫。超全域性變數作用於也是為當前的指令碼檔案的任意位置,在使用的時候無需先執行 ...

Python中的全域性變數

全域性變數不符合引數傳遞的精神,所以,平時我很少使用,除非定義常量。今天有同事問乙個關於全域性變數的問題,才發現其中原來還有門道。程式大致是這樣的 constant 0 def modifyconstant print constant constant 1 return if name main ...