python語言篇(8知識點)

2021-09-14 00:28:15 字數 4469 閱讀 9572

函式變數

函式名是變數,它在建立時繫結乙個函式

示例:def f1(lst=):

print("f1函式被呼叫")

f1()

f1 = none

f1() # 出錯,f1 繫結的是none

示例:def f1():

print("hello")

def f2():

print("world")

f1, f2 = f2, f1

f1()  # world

乙個函式可以作為另乙個函式的引數(實參)傳遞

示例:def f1():

print("f1函式被呼叫")

def f2():

print("f2函式被呼叫")

def fx(fn):

print("fn繫結的函式是:", fn)

# 在fx內呼叫fn繫結的函式

fn()

fx(f1)  # 呼叫fx,把f1作為實參傳數

fx(f2)

看懂下列**在做什麼?為什麼?

def goodbye(l):

for x in l:

print("再見:", x)

def hello(l):

for x in l:

print("歡迎:", x)

def fx(fn, l):

print("fx被呼叫")

fn(l)

fx(hello, ['tom', 'jerry', 'spike'])

fx(goodbye, ['小張', '小李'])

函式可以做為另乙個函式的返回值:

函式可以返回另乙個函式

示例:def get_op():

s = input("請輸入您的操作: ")

if s == "求最大":

return max

elif s == '求最小':

return min

elif s == '求和':

return sum

l = [2,4,6,8,10]

print(l)

f = get_op()

print(f(l))

函式巢狀定義:

def 語句的作用是用來建立乙個函式

def 語句可以寫在函式內部,在函式執行時可以動態建立乙個函式

示例:def get_func(value):

if value == 1:

def myadd(x, y):

return x + y

return myadd

elif value == 2:

def mysub(x, y):

return x - y

return mysub

fx = get_func(1)

print(fx(400, 300))  # 700

fx = get_func(2)

print(fx(400, 300))  # 100

全域性變數和區域性變數

區域性變數:

1. 定義在函式內部的變數稱為區域性變數(函式的形參也是區域性變數)

2. 區域性變數只能在函式內部使用

3. 區域性變數在函式呼叫時才能夠被建立,在函式呼叫之後會自動銷毀

全域性變數:

定義在函式外部,模組內部的變數稱為全域性變數

全域性變數,所有函式都可以直接訪問(但函式內部不能直接修改全域性變數的繫結關係)

示例:a = 100

b = 200

def fn(c):

d = 300

print(a, b, c d)

fn(300)

print('a =', a)

print('b =', b)

區域性變數說明:

1. 在函式內首次對變數賦值是建立區域性變數,再次為變數賦值是修改區域性變數的繫結關係

2. 在函式內部的賦值語句不會對全域性變數造成影響

python作用域:

作用域也叫命名空間,是訪問變數時查詢變數名的範圍空間

python的四個作用域legb

作用域            英文解釋            英文簡寫

區域性作用域(函式內)     local(function)         l

外部巢狀函式作用域  enclosing function locals  e

函式定義所在模組的作用域  global(module)        g

python 內建模組的作用域  builtin(python)       b

示例見:

namespace.py

變數名的查詢規則(順序):

1. 查詢本地變數

2. 查詢包裹此函式的外部巢狀函式內部的變數

3. 全域性變數

4. 內建變數

globals() / locals() 函式

globals() 返回全域性作用內變數的字典

locals() 返回區域性作用域內變數的字典

示例見: globals_locals_function.py

練習:1. 寫乙個函式 mysum 此函式的功能是返回:

1 + 2 + 3 + 4 + 5 + ..... + n 的和

def mysum(n):

....

print(mysum(100))  # 5050

2. 寫乙個函式 mysum2 此函式可以傳入乙個引數,兩個引數和三個引數:

1) 當傳入乙個引數時,這個引數代表 終止數

2) 當傳入兩個引數時,第乙個引數代表起始值,第二個引數代表終止值

3) 當傳入三個引數時,第三個引數代表步長

此函式的功能是返回從開始到終止值的和

如:print(mysum2(5))  # 10  (0+1+2+3+4)

print(mysum2(4, 6))  # 9 (4+5)

print(mysum2(5, 10, 2))  # 21 (5+7+9)

global 語句

作用:1. 告訴解釋執行器,global語句宣告的乙個或多個變數,這些變數的作用域為模組級的作用域的變數,也稱作全域性變數

2. 全域性宣告(global) 將賦值變數對映到模組檔案內部的作用域

語法:global 變數1, 變數2, ...

示例:global ga, gb

global gc

global宣告示例見:

global_statement.py

說明:1. 全域性變數如果要在函式內部被賦值,則必須經過全域性宣告(否則會被認為是區域性變數)

2. 全域性變數在函式內部不經過宣告就可以直接訪問

3. 不能先宣告區域性變數,再用global宣告為全域性變數,此做法不附合規則

4. global變數列表裡的變數名不能出現在此作用域內的形參列表裡

nonlocal語句

作用:告訴直譯器, nonloca宣告的變數不是區域性變數,也不是全域性變數,而是外部巢狀函式內的變數

語法:nonlocal 變數名1, 變數名2, ....

示例見:

nonlocal_statement.py

說明:1. nonlocal語句只能在被巢狀函式內部進行使用

2. 訪問nonlocal變數將對外部巢狀函式作用域內的變數進行操作

3. 當有兩層或兩層以上函式巢狀時,訪問nonlocal變數只對最近一層的變數進行操作

4. nonlocal語句的變數列表的變數名不能出現在此函式的引數列表裡

說明3示例:

def f1():

v =100

def f2():

v = 200

def f3():

nonlocal v

v += 1 # 此時只對f2的v進行操作

f3()

f2()

練習:1. 建立乙個列表l =

寫乙個函式 input_number讀取資料放入列表l中

程式如下:

l =

def input_number():

# 此處自己加入**

while true:

i = int(input("請輸入數字(-1結束):"))

# 此處自己完成

input_number()

print("您剛才輸入的整數值是:", l)

2. 寫乙個函式isprime(x) 判斷x是否為素數,如果為素數返回true,否則返回false

測試**:

if isprime(5):

print("5素數")

3. 寫乙個函式prime_m2n(m, n) 返回從m開始,到n結束範圍內素數的列表,並列印

l = prime_m2n(10, 20)

print(l)  # [11, 13, 17, 19]

4. 寫乙個函式primes(n), 返回小於n的所有的素數的列表.

l = primes(10)

print(l)  # [2, 3, 5, 7]

python語言篇(6知識點)

字典的成員資格判斷 in not in 運算子 用 in 運算子可以判斷乙個鍵是否存在於字典中,如果存在則返回true,否則返回false not in 返回值與 in 相反 示例 d 1 in d true 2 in d true 2 not in d false 8 not in d true ...

Python知識點總結篇(二)

cat fat black loud size,color,disposition cat 複製 sort 和sorted 方法的比較 sort key none,reverse false 就地改變列表,sorted iterable,key none,reverse false 返回新的列表,對...

Python知識點總結篇(三)

with 自動關閉檔案 with open log r as f 複製 管道 用於匹配多個表示式中的乙個,匹配多個分組 問號 實現可選匹配 import re batregex re.compile r bat wo man mo1 batregex.search the adventures of...