# python3 命名空間和作用域
# 一般有三種命名空間:內建名稱 全域性名稱 區域性名稱
# 內建名稱:python 語言內建的名稱,比如函式名 abs、char 和異常名稱 baseexception、exception 等等
# 全域性名稱:模組中定義的名稱,記錄了模組的變數,包括函式、類、其它匯入的模組、模組級的變數和常量
# 區域性名稱:函式中定義的名稱,記錄了函式的變數,包括函式的引數和區域性定義的變數。(類中定義的也是)
# 命名空間的生命週期取決於物件的作用域,如果物件執行完成,則該命名空間的生命週期就結束
# 作用域就是乙個 python 程式可以直接訪問命名空間的正文區域
# python的作用域一共有4種,分別是:
# l(local):最內層,包含區域性變數,比如乙個函式/方法內部
# e(enclosing):包含了非區域性(non-local)也非全域性(non-global)的變數
# g(global):當前指令碼的最外層,比如當前模組的全域性變數
# b(built-in): 包含了內建的變數/關鍵字等
# python 中只有模組(module),類(class)以及函式(def、lambda)才會引入新的作用域
if true:
msg = '你真好,真是個大sd'
print(msg) # 這裡能夠輸出,說明在諸如if語句裡面定義的變數是可以直接在外部訪問
# 全域性變數和區域性變數
total = 0
def sum(a,b):
total = a+b
print("在裡面是區域性變數,total = ",total)
return total
sum(10,20)
print("在外面是全域性變數,total = ",total)
# global 和 nonlocal關鍵字
# 內部作用域修改外部作用域的變數 需要用到這兩個關鍵字
# 修改全域性變數:
num = 1
def fun1():
global num
print(num)
num = 123
print(num) # 外部引數num發生了變化
fun1()
print(num)
# 修改巢狀作用域
def outer():
num = 1
def inner():
nonlocal num
num = 100
print(num)
inner()
print(num)
outer()
# 特殊情況
a = 10
def test():
global a
a = a+1
print(a)
test()
print(a) # 外部的值的發生了改變
# 或者使用引數傳遞的方式:
a = 10
def test(a):
a = a+1
print(a)
test(a)
print(a) # 實際上外部的值沒有改變
python基礎自學 第七天
0.1變數的引用 1.1引用的概念 注意 如果變數已經被定義,當給乙個變數賦值的時候,本質上是修改了資料的引用 1.2函式的引數和返回值的傳遞 呼叫函式時,本質上傳遞的是實參儲存資料的引用 實參的記憶體位址 而不是實參儲存的資料 02.可變和不可變型別 不可變型別,記憶體中資料不允許被修改 數字型別...
python基礎作業第七天
恢復內容開始 1.判斷乙個數是否是水仙花數,水仙花數是乙個三位數,三位數的每一位的三次方的和還等於這個數.那這個數就是乙個水仙花數,例如 153 1 3 5 3 3 3 sum 0 num input 請輸入乙個數字 for c in range len num sum sum int num c ...
C 基礎第七天
1 ref引數 ref引數側重於將乙個變數以引數的形式帶到乙個方法中進行改變,改變完成後,再講改變後的值帶出來。在使用ref引數的時候需要注意 ref引數在方法外必須為其賦值。2 方法的過載 方法的過載指的是方法的名稱相同,但是引數不同。引數不同 1 如果引數的個數相同,那麼引數的型別就不能相同。2...