python中區域性(全域性)變數 可變引數與輸入輸出

2021-10-09 02:40:27 字數 3037 閱讀 3015

定義在函式內部的變數,函式的引數變數都是區域性變數;區域性變數的有限範圍只能說是該函式的內部;用以下**來解釋區域性變數:第5行**是錯誤的。

原因:ret是 func 函式內部的區域性變數,有效範圍是 func 函式內部不能在外部使用;其中引數變數 num1,num2 也是函式的區域性變數,也只能在 func 函式內部使用。

def

func

(num1,num2)

: ret=num1+num2

return ret

func(1,

2)print

(ret)

#錯誤表達方式,程式會報錯

在函式外面定義的為 全域性(global)變數;在函式裡面定義的為 區域性(local)變數。若函式內部有 變數賦值語句且變數名和全域性變數名同名,但他們是不同的變數,指向不同的物件。

var =

'桌子'

deftest()

:# var = '椅子' #如果沒事賦值語句函式裡面可以直接使用外部的區域性變數 均列印為桌子

print

('在函式中,var的值是:'

,var)

#列印 椅子

test(

)print

('在函式外,var的值是:'

,var)

#列印 桌子

如果要在函式內部對全域性變數重新賦值,在函式內部使用關鍵字 global申明;應該通過global +變數名 這行申明表示upchars名字對應的是全域性變數upchars,如以下**:

upchars=

'零一二三四五六七**十'

defchange

(num)

:# global upchars #使全域性變數進行改變

upchars=

'今天是六月二日周二'

print

('對應的內容是:'

+upchars[num]

)#列印 二

change(5)

print

('對應內容是:'

+upchars[5]

)#使用global申明對全域性變數列印 二 ,不使用則列印為 五

在函式定義時引數前加一 * ,該引數稱為可變引數,在呼叫該函式的時候直譯器建立乙個tuple(型別)賦值給這個引數變數,並把傳入的資料物件放到tuple物件裡面。

在呼叫函式時,傳入引數前面加 * 號,是引數展開;

studentinfo =

defprintage

(students)

:for student in students:

print

(f'學生:,年齡:'

)#目的是確定引數個數,去掉位置引數個數有誤將會報錯,如何改變這一問題使函式更方便好看?

printage(

['小紅'

,'小雲'

,'小羽'])

#解決上述問題,在函式引數前加乙個 * 號,即可變為可變引數,改變後的**如下:

studentinfo =

defprintage

(*students)

:print

(type

(students)

)#列印

for student in students:

print

(f'學生:,年齡:'

)#目的是確定引數個數,去掉位置引數個數有誤將會報錯,如何改變這一問題使函式更方便好看?

printage(

'小紅'

,'小雲'

,'小羽'

)

在函式定義時引數前加兩 ** ,該引數稱為關鍵字可變引數;在呼叫該函式時直譯器會建立一字典賦值給這個引數變數。

def

addstudents

(table,

**students)

:print

(type

(student)

)#兩**的引數變數students 的值是乙個字典

for name,age in students.items(

):

table[name]

= age

table1 =

table2 =

addstudents(table1,張白 =

20,王牌 =23)

#傳入的引數必須是 name=value 方式,引數名為key,引數值為value

addstudents(table2,劉黎 =

19,黃輝 =31)

print

(table1)

#列印

print

(table2)

#列印

python的內建函式input,它是讓使用者輸入之前顯示在螢幕上的提示資訊,input函式裡邊的引數是字串;input函式返回的使用者輸入的內容都是字串,不包括最後的回車字元。如以下**:直譯器在執行到input處將停止執行**等待使用者輸入結束,按回車後繼續執行以下**。

salary=

input

('請輸入阿魚的薪資:'

)print

(salary)

根據使用者輸入薪資計算出稅後薪資(扣稅15%)寫**:從第5行開始 (注意:字串不能進行數**算)。

salary=

input

('請輸入薪資:'

)intsalary=

int(salary)

#將字串轉化為數字

realsalary=intsalary*75/

100#計算出稅後薪資

realsalarystr=

str(realsalary)

#再將數字轉化為字串,方便下面的字串拼接

print

('稅後薪資是:'

+realsalarystr)

#列印 稅後薪資

Go中區域性全域性變數的區分

這是可能也許是容易混淆滴,先上1個例子 package main import fmt var nickname 大蝦 func main func show func change 上面會輸出 大蝦大蝦小蝦大蝦 我們稍微改動下 package main import fmt var nicknam...

Go中區域性全域性變數的區分

這是可能也許是容易混淆滴,先上1個例子 package main import fmt var nickname 大蝦 func main func show func change 上面會輸出 大蝦大蝦小蝦大蝦 我們稍微改動下 package main import fmt var nicknam...

python全域性變數 區域性變數

定義在函式內的變數有區域性作用域,在乙個模組中最高端別的變數有全域性作用域。全域性變數的乙個特徵是除非被刪除掉,否則它們的存活到指令碼執行結束,且對於所有的函式,它們的值都是可以訪問的。global str global string def foo local str local string r...