函式初接觸2

2022-07-24 06:54:12 字數 3690 閱讀 8019

函式是第一類物件

函式名是可以被引用的

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))

函式巢狀的定義

def

foo():

defcoo():

print('hello wanglu')

coo()

foo()

存放名字(變數名,函式名等)的空間

如果你想訪問乙個變數值,必須先訪問對應的命名空間,拿到名字和對應的記憶體位址的繫結關係

命名空間的分類

1、內建名稱的空間

就是儲存python提前給你定義好的名字,的空間

2、全域性命名空間

存放於檔案級別的名字,就是全域性命名空間

如if、while、for內部定義的名字執行之後都存放於全域性命名空間

3、區域性命名空間

函式內部定義的所有名稱都存放在當前函式的內建命名空間裡

1、內建命名空間

在python直譯器啟動的時候生效,關閉直譯器的時候失效

2、全域性命名空間

當你啟動當前py檔案時生效,當頁面**執行完畢時失效

3、區域性命名空間

當你呼叫當前函式時生效,函式體最後一行**執行結束就失效

命名空間的查詢順序:

區域性:區域性》全域性》內建

全域性:全域性》內建 內建再找不到就報錯

函式內部使用的名字,在定義階段已經規定死了,與你的呼叫位置無關

x = 111

deffoo():

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裡的 是永...