python函数调用外部变量_Python基础
python基礎語法
- n 換行;t 制表符;代碼分隔
- ‘‘’ ‘’‘多行文本賦值
- ;多行語句寫在一行(不符合PEP8規范)
- 關鍵字
- python 自帶的好用的函數
注:reduce() 函數在 python 2 是內置函數, 從python 3 開始移到了 functools 模塊
- 運算符
- 循環
迭代循環 for
條件循環 while
循環跳出:
break 終止循環
continue 跳過本次循環
pass 不執行,只是讓代碼看的完整 - 三元運算符
為真的結果 if 判定條件 else 為假的結果 - 標準數據類型
不可變類型
數值 number
字符串 string
元組 tuple
可變類型
列表 list
集合 set
字典 dict不可變類型:變量賦值 a=5 后再賦值 a=10,這里實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當于新生成了a。可變類型:變量賦值 la=[1,2,3,4] 后再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。 - 函數必包:函數內部域能記住外部定義的參數和變量
變量搜索位置如果函數內部有先使用,如果沒有則向上一層尋找。函數內的局部變量的生命周期隨著函數的結束而結束。全局變量會一直存在,除非腳本運行結束或者del刪除它。
- 偏函數
functools.partial() 固定位置參數
python函數
python 函數的參數傳遞:不可變類型:類似 c++ 的值傳遞,如 整數、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內部修改 a 的值,只是修改另一個復制的對象,不會影響 a 本身。可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改后fun外部的la也會受影響
- 必備參數
必備參數須以正確的順序傳入函數,調用時的數量必須和聲明時的一樣。 - 關鍵字參數
使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為 Python 解釋器能夠用參數名匹配參數值。 - 默認參數
調用函數時,默認參數的值如果沒有傳入,則被認為是默認值。 - 可變參數通過*傳入不定長的參數 *傳遞list tuple類型 **傳遞dict類型
當我們聲明一個諸如 *param 的星號參數時,從此處開始直到結束的所有位置參數(Positional Arguments)都將被收集并匯集成一個稱為“param”的元組(Tuple)。
類似地,當我們聲明一個諸如 **param 的雙星號參數時,從此處開始直至結束的所有關鍵字參數都將被收集并匯集成一個名為 param 的字典(Dictionary)。
裝飾器
裝飾器的本質是函數,它可以讓其他函數在不需要做任何代碼變動的前提下增加額外功能,裝飾器的返回值也是一個函數對象,,主要用來裝飾其他函數,也就是為其他函數添加附加功能
import time def showtime(func):def wrapper():start_time = time.time()func()end_time = time.time()print('spend is {}'.format(end_time - start_time))return wrapper@showtime 這樣方便 不然需要調用 #foo = showtime(foo) def foo():print('foo..')time.sleep(3)@showtime 這樣方便 不然需要調用 #doo = showtime(doo) def doo():print('doo..')time.sleep(2)foo() doo()#多好個函數都這么用 互相不沖突帶參數的裝飾器
import time def time_logger(flag = 0):def showtime(func):def wrapper(a, b):start_time = time.time()func(a,b)end_time = time.time()print('spend is {}'.format(end_time - start_time))if flag:print('將此操作保留至日志')return wrapperreturn showtime@time_logger(2) #得到閉包函數showtime,add = showtime(add) def add(a, b):print(a+b)time.sleep(1)add(3,4)裝飾器總結
def myDecorator(...): #定義裝飾器,可能帶參數def decorator(func): #裝飾器核心,以被裝飾的函數對象為參數,返回裝飾后的函數對象def wrapper(*args, **kvargs): #裝飾的過程,參數列表適應不同參數的函數... #修改函數調用前的行為func(*args, **kvargs) #調用函數... #修改函數調用后的行為return wrapperreturn decorator@myDecorator(...): #給函數加上裝飾器 def myFunc(...): #自己定義的功能函數...Python內置裝飾器
在Python中有三個跟class相關的內置裝飾器:staticmethod、classmethod 和property。
staticmethod 是類靜態方法,其跟成員方法的區別是沒有 self 參數,并且可以在類不進行實例化的情況下調用
classmethod 與成員方法的區別在于所接收的第一個參數不是 self (類實例的指針),而是cls(當前類的具體類型)
property 是屬性的意思,表示可以通過通過類實例直接訪問的信息
面向對象
type() #一切都可以用type()看類型,因為python一切皆對象 id() dir() isinstance([1,2,3],list)其他部分代碼:
from functools import reduce reduce(lambda x,y:x*10+y,[1,2,3,4,5])#前面函數后面參數 :12345filter(lambda x: x not in numerical_columns, list(x_test.columns))def ChangeInt( a ):#函數的參數傳遞,不可變對象a = 10b = 2 ChangeInt(b) print(b) # 結果是 2def changeme(mylist):#函數的參數傳遞,可變對象mylist.append([1,2,3,4])print("函數內取值: ", mylist)returnmylist = [10,20,30] changeme( mylist ) print("函數外取值: ", mylist) 函數內取值: [10, 20, 30, [1, 2, 3, 4]] 函數外取值: [10, 20, 30, [1, 2, 3, 4]]def printinfo( name, age ):#函數的參數傳遞,關鍵字參數print("Name: ", name)print("Age ", age)return#調用printinfo函數 printinfo(age=50, name="miki")def printinfo( name, age = 35 ):#函數的參數傳遞,默認參數"打印任何傳入的字符串"print("Name: ", name)print("Age ", age)return#調用printinfo函數 printinfo(age=50, name="miki" ) printinfo(name="miki" )def printinfo( arg1, *vartuple ):#加了星號(*)的變量名會存放所有未命名的變量參數"打印任何傳入的參數"print "輸出: "print arg1for var in vartuple:print varreturn# 調用printinfo 函數 printinfo( 10 ) printinfo( 70, 60, 50 )總結
以上是生活随笔為你收集整理的python函数调用外部变量_Python基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: socket closed是什么意思_s
- 下一篇: csv指的是什么文件格式