函式是第一類物件
函式名是可以被引用的
def函式名可以當做引數傳遞foo():
print('hello wanglu')
a = foo
a()
函式名可以當做返回值使用deffoo(a, b, doo):
print(a, b, doo)
doo()
def
coo():
print('hello wanglu')
foo(1,2,coo)
傳參的時候沒有特殊需求,但一定不要加括號,不讓當場執行
def函式名可以被當做容器型別的元素foo():
print('hello wanglu')
defdoo(a):
return
aa = doo(foo)
print(a)
a()
# 例題1在函式內呼叫函式deffoo():
print('hello wanglu')
l1 = [1, '2', foo, foo()]
f = l1[2]
print(f)
f()# 例題2
defregister():
print('register')
deflogin():
print('login')
defshopping():
print('shopping')
defpay():
print('pay')
doo =
defmoo():
while
true:
print('''
1、註冊
2、登入
3、購物
4、付款
5、退出
''')
l1 = input('輸入對應的編號:').strip()
ifl1 == '5':
break
elif
l1not
indoo:
continue
else:
doo[l1]()
moo()
# 例題1函式巢狀的定義deffoo():
print('hello wanglu')
defcoo():
foo()
print('ko ko da yo')
coo()
# 例題2
deffoo(x,y):ifx
>
y:return
xelse:
return
y# print(foo(1,2))
def
foot(x,y,z,w):
roo = foo(x,y)
roo = foo(roo,z)
roo = foo(roo,w)
return
rooprint(foot(1,20,50,4444))
deffoo():
defcoo():
print('hello wanglu')
coo()
foo()
存放名字(變數名,函式名等)的空間
如果你想訪問乙個變數值,必須先訪問對應的命名空間,拿到名字和對應的記憶體位址的繫結關係
命名空間的分類
1、內建名稱的空間
就是儲存python提前給你定義好的名字,的空間
2、全域性命名空間
存放於檔案級別的名字,就是全域性命名空間
如if、while、for內部定義的名字執行之後都存放於全域性命名空間
3、區域性命名空間
函式內部定義的所有名稱都存放在當前函式的內建命名空間裡
1、內建命名空間
在python直譯器啟動的時候生效,關閉直譯器的時候失效
2、全域性命名空間
當你啟動當前py檔案時生效,當頁面**執行完畢時失效
3、區域性命名空間
當你呼叫當前函式時生效,函式體最後一行**執行結束就失效
命名空間的查詢順序:
區域性:區域性》全域性》內建
全域性:全域性》內建 內建再找不到就報錯
函式內部使用的名字,在定義階段已經規定死了,與你的呼叫位置無關
x = 111deffoo():
x = 222
deffoo2():
x = 333
deffoo3():
x = 444
deffoo4():
x = 555
# print(x)
print('hello wanglu')
foo4()
foo3()
foo2()
foo()
# 例題2
x = 111
deffoo():
print(x)
deffoo2():
print(x)
return
foo2
foo()
f = foo()
f() # 列印三遍
"""作用域的分類:
1、全域性作用域
全域性可以呼叫的名字就存在於全域性作用域
內建命名空間+全域性命名空間
2、區域性作用域
區域性可以呼叫的名字就存放與區域性作用域
區域性命名空間
global:宣告全域性變數(***)
nonlocal:在區域性命名空間宣告區域性變數,在區域性修改上層函式
的變數(*)
只有可變型別可以在區域性修改外部變數的值 (*****)
"""
# x = 1
## def index():
# global x
# x = 2
# index()
## print(x)
# 在區域性修改外部函式的變數
# x = 1111##
# def index():
# x = 1
## def func2():
# x = 2
## def func():
# nonlocal x
# x = 3
## func()
# print(x)
## func2()
# print(x)##
# index()
# print(x)
# l1 =
# def index(a):
# # print(l1)
# index(1)
## print(l1)
# 區域性變數的修改無法影響上層,上上層
def
index():
x = 1
def
index2():
nonlocal
xx = 2
index2()
print(x)
index()
指標初接觸
指標是強大的c語言工具 指標指向位址 1.定義指標 使用指標之前要定義指標,與int,char,float類似的定義方式,不過要在定義型別和指標名之間加乙個 號來表示定義的是指標,不帶 號會導致定義的為變數而非對應型號的指標。2.初始化指標 使用指標之前還要初始化指標,否則指標有可能會覆蓋掉資料 我...
三 sqlldr初接觸
只記錄一些學習時看到和自己用到的sqlldr 控制檔案內命令 定長字串處理 into table a col1 position 1 5 第1到第5,5個字元 col2 position 1,7 第6 5 1,表示上乙個結束的位置,1為偏移量 到第7,2個字元 字串處理命令 舉例 into tabl...
gdb除錯初接觸
之前面試的時候有遇到過乙個問題,當覆蓋率偏低的時候,對於測試用力無法覆蓋的部分,有沒有什麼辦法可以實現覆蓋,當時沒答上來,後來了解了可以通過gdb除錯的方法來實現 流程的控制。先來看一段 include includeint main void else return 0 這段 裡else裡的 是永...