1、函式的引數
1)實參角度:位置引數、關鍵字引數、混合引數
2)形參角度:位置引數、預設引數、僅限關鍵字引數,萬能引數
3)形參角度引數順序:位置引數,*args,預設引數,僅限關鍵字引數,**kwargs
2、*的魔性用法:
1)函式的定義時:代表聚合
2)函式的呼叫時:代表打散
3、python中存在的三個空間:
內建命名空間:儲存的內建函式:print, input.....
區域性命名空間:存放的函式內部的變數與值的對應關係
4、載入順序:內建命名空間------->全域性命名空間------>區域性命名空間(執行函式時候)
5、調取順序:就近原則。 區域性命名空間------>全域性命名空間----->內建命名空間
1) 區域性作用域只能引用全域性變數,不能修改。
6、作用域:
1)全域性作用域 :內建命名空間+全域性命名空間
2)區域性作用域:區域性命名空間
1、看**寫結果
def func():
return 1, 2, 3
val = func()
print(val)
print(type(val) == tuple)
print(type(val) == list)
# 輸出結果:true false
2、看**寫結果
def func(*args, **kwargs):
print(args)
print(kwargs)
# a. 請將執行函式,並實現讓args的值為 (1,2,3,4)
func(1, 2, 3, 4)
func(*[1,2,3,4])
# b. 請將執行函式,並實現讓args的值為 ([1,2,3,4],[11,22,33])
func([1,2,3,4],[11,22,33])
# c. 請將執行函式,並實現讓args的值為 ([11,22],33) 且 kwargs的值為
func([11,22],33,k1='v1',k2='v2')
# d. 如執行 func(*),請問 args和kwargs的值分別是?
func(*)
# e. 如執行 func(,[11,22,33]),請問 args和kwargs的值分別是?
func(,[11,22,33])
# f. 如執行 func('武沛齊','金鑫','女神',[11,22,33],**),請問 args和kwargs的值分別是?
func('武沛齊','金鑫','女神',[11,22,33],**)
3、看**寫結果
def func(name,age=19,email='123.qq.com'):
print(name,age,email)
#a執行func('mrxiong'),判斷是否可執行,請可以訪問name、age、email的值分別是什麼?
func('mrxiong')
#b執行func('mrxiong',20),判斷是否可執行,請可以訪問name、age、email的值分別是什麼?
func('mrxiong',20)
#c執行func('mrxiong',20,30),判斷是否可執行,請可以訪問name、age、email的值分別是什麼?
func('mrxiong',20,50)
#d執行func('mrxiong,email='[email protected]'),斷是否可執行,請可以訪問name、age、email的值分別是什麼?
func('mrxiong',email='[email protected]')
#e執行func('mrxiong,email='[email protected]',age=99),斷是否可執行,請可以訪問name、age、email的值分別是什麼?
func('mrxiong',email='[email protected]',age=99)
#f執行func(name='mrxiong',99),斷是否可執行,請可以訪問name、age、email的值分別是什麼?
func(name='mrxiong',99)
#g執行func(name='mrxiong',99,'[email protected]'),斷是否可執行,請可以訪問name、age、email的值分別是什麼?
func(name='mrxiong',99,'[email protected]')
4、看**寫結果
def func(users,name):
return users
result = func(['mrxiong','張三'],'alex')
print(result)
#返回結果:
#['mrxiong', '張三', 'alex']
5、看**寫結果
def func(users,name):
return users
result = func(['mrxiong','張三'],'alex')
print(result)
輸出結果:
['mrxiong', '張三', 'alex']
6、看**寫結果
a = 10
b = 20
def test(a,b):
return a ,b
c = test(b,a)
print(c)
輸出結果:
(20, 10)
7、看**寫結果
def a(*args):
count = 0
for i in args:
count += i
return count
c = a(1,2,3,4,5)
print(c)
輸出結果:
15
1、如果你的預設引數指向的是可變的資料型別,那麼你無論呼叫多少次這個預設引數,都是指向同乙個
def func(a,list=):
return list
print(func(10,))
print(func(20,))
輸出結果:
[10]
[10, 20]
2、在函式中,如果你定義了乙個變數,但是在定義這個變數之前對其引用了,那麼直譯器認為語法問題。
你應該在使用之前先定義
count = 1
def func():
print(count)
count = 3
func()
輸出結果:
unboundlocalerror: local variable 'count' referenced before assignment
3、global 全域性
1)、在區域性作用域 宣告乙個全域性變數
name = 'alex'
def func():
global name
name = 'mrxiong'
print(name)
func()
print(name)
輸出結果:
alex
mrxiong
2)可以修改乙個全域性變數
count = 1
def func1():
global count
count += 1
print(count)
func1()
print(count)
輸出結果:
12
4、nonlocal
不能夠操作全域性於變數。區域性作用域,內層函式對外層函式的區域性變數進行修改
count = 1
def inner():
nonlocal count
count += 1
print(count)
inner()
輸出結果:
1
Python基礎10 回顧
從最初的 hello world 走到物件導向,該回過頭來看看,教程中是否遺漏了什麼。我們之前提到一句話,everything is object 那麼我們就深入體驗一下這句話。需要先介紹兩個內建函式 dir 和help dir 用來查詢乙個類或者物件所有屬性,你可以嘗試一下 print dir l...
day10作業常用類
一 基礎案例 1 訓練案例1 1.1 訓練描述 陣列排序 一 需求說明 定義乙個陣列,陣列中元素為 將陣列中的元素按照從小到大的順序進行排序。1.2 操作步驟描述 1.建立乙個一維陣列,陣列內容為。2.對陣列中元素按照從小到大的順序進行排序。3.將排完序的陣列進行列印。public class te...
day10函式作業詳解
2,寫函式,接收n個數字,求這些引數數字的和。動態傳參 3,讀 回答 中,列印出來的值a,b,c分別是什麼?為什麼?a 10 b 20 def test5 a,b print a,b c test5 b,a print c 4,讀 回答 中,列印出來的值a,b,c分別是什麼?為什麼?a 10 b 2...