6-day6-函数-1
生活随笔
收集整理的這篇文章主要介紹了
6-day6-函数-1
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
增刪改查 文件當作存放數據的倉庫
做個工具和用戶交互,可以處理用戶命令
用戶輸入什么命令,就print什么命令 def select(x,y,z):with open(z,'w',encoding='utf-8') as f:for line in f:if y in f:print(line) def delete():print('delete func') def change():print('change func') def add():print('delete func') func_dic = {'select': select,'add': add,'change': change,'del': delete }while True:inp = input('>>: ').strip()if not inp:continuecmd_l = inp.split(' ')if cmd_l[0] in func_dic:func_dic[cmd_l[0]](cmd_l[0], cmd_l[1], cmd_l[2])else:print('無效命令')input('>>: ')
做個工具和用戶交互,可以處理用戶命令
用戶輸入什么命令,就print什么命令 def select(x,y,z):with open(z,'w',encoding='utf-8') as f:for line in f:if y in f:print(line) def delete():print('delete func') def change():print('change func') def add():print('delete func') func_dic = {'select': select,'add': add,'change': change,'del': delete }while True:inp = input('>>: ').strip()if not inp:continuecmd_l = inp.split(' ')if cmd_l[0] in func_dic:func_dic[cmd_l[0]](cmd_l[0], cmd_l[1], cmd_l[2])else:print('無效命令')input('>>: ')
函數參數的使用
?
def func1():if 1 > 2:print('d')else:print('ok')func1()# 形參與實參 # 形參是變量名 實參是1 2,形參函數內 def foo(x,y):return x+yfoo(1,2)# 位置參數:按照從左到右的順序一次定義的參數 # 按位置定義的形參,必須被傳值,多一個不行,少一個也不行 # 按位置定義的實參,必須與形參一一對應# 關鍵字參數:參數在定義時,按照key=value進行定義,形參與實參不必一一對應 func1(x=1, y=2, z=3)func1(1,y=2) #混合,位置實參必須在關鍵字實參前面 # 一個形參只能被傳值一次# 默認參數:在定義函數階段,就已經為形參賦值,調用階段就無需傳值。 def func1(x, y=10) # 默認參數,必須放在位置形參后面 def func1(x=10, y) #不行! # 默認參數通常要定義成不可變類型,只在定義階段賦值一次#可變長形參-分兩種 def func2(x,y,*args): #多余的參數存儲在元組里print(x,y)print(args) func2(1,2,3,4,5,6) func2(1,2,*(3,4,5,6)) #注意這種幅值方法func2(*('a','b','c')) == func2('a','b','c')def func3(x,y,**kwargs): # 多余的參數放在字典里 #多余的關鍵字參數被**接受,傳給kwargsprint(x,y)print(kwargs) func2(y=2,x=1,z=3,a=5)#命名關鍵字參數 #放置出現異常# 實參必須要以關鍵字傳值 def register(*,name,age):print(age)print(name) register(age=18) register(name='alex',age=21)def register(*args,name,age):print(age)print(name) register(1,2,3,4,name='egon',age=10)函數對象
# 可被引用 f = func()# 可以當作函數的參數# 可以當作函數的返回值def foo():print('from foo')def bar():return foo f = bar() print(f)# 可以當作容器類型的元素: 字典,value為函數名def select():print('select function')func_dict={'select':select }func_dict['select']()# x = 0def f1():x = 1def f2():x = 2print(x)return f2f = f1() print(f) f()x = 1 def func1():x = 2def fun2():x = 3def fun3():#global xnonlocal xx = 10000print(x)fun3()print(x)fun2()func1()名稱空間和作用域
# 名稱空間 :存放名字與值的綁定關系 # 名稱空間分為三種:# 內置名稱空間:python解釋器自帶的名字,解釋器啟動就生成空間# 全局名稱空間:文件級別定義的名字都會存放在全局名稱空間,執行python文件時會產生,頂頭寫的定義 x = 1 def fun1():class Foo:pass import os os.name# 局部名稱空間:定義在函數內部的名字,在函數調用階段才會生效#三者的加載順序: 內置——全局--局部。 # 取值 內部函數順序:局部-內置-全局# 作用域:作用范圍(生效分為) x = 0 def f1():x = 1def f2():x = 2def f3():x = 3print(x)f3()f2()f1() # 全局作用域: 內置名稱空間和全局名稱空間的名字屬于全局范圍,在整個文件任意位置都能被調用,全局有效 def foo(x,y):print(max(x,y)) foo(12,23)# 局部作用域: 局部名稱空間的名字,屬于局部范圍,只在函數內,局部有效def foo(x,y):def maxx(x,y):if x > y:return xelse:return yprint(maxx(x,y))# print(globals())print(locals()) foo(12,23)# 局部作用域-->全局作用域 print(globals()) print(dir(globals()['__builtins__'])) print(locals()) print(globals() is locals()) # 全局的局部是全局
轉載于:https://www.cnblogs.com/cx2c/p/7050132.html
總結
以上是生活随笔為你收集整理的6-day6-函数-1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三年程序猿的实战开发经验之谈-做人做事建
- 下一篇: linux以16进制查看文件