Python函數的說明與運用python
函數定義:app
函數是一組語句的集合,用以實現某一特定功能。函數可簡化腳本,函數包括內置函數和自定義函數框架
自定義函數框架:dom
在python中使用def能夠聲明一個函數,完整的函數是由函數名,參數,函數體,返回值。ide
聲明函數的形式以下:函數
def 函數名 (參數) 函數體 return 返回值
注意:參數和返回值不是必須的,當沒有設置返回值的時候,該函數的返回值默認是nullui
函數調用編碼
在python中自定義函數與內置函數調用方法相同,只要使用函數名制定要調用的函數,而後再用函數後加相應的參數便可,若是有多個參數,則不一樣的參數要以「,」分開。函數調用必須在申明一個函數以後才能調用。spa
函數中的參數分類orm
默認參數
在python中,能夠在聲明函數時,預先爲參數設置一個默認值。當調用參數時,若是某個參數,具備默認值,則能夠不向函數傳遞該參數
def fun(x=5) return x**3 print (fun(2)) 8 print (fun()) 125
指定參數
若是一個函數具備多個參數,而且這些參數都具備默認值,在調用函數的時候,可能第一個參數傳遞值能夠設置
def fun(x=1,y=2,z=3): return(x+y-z)**3 print (fun(2)) 1 print (fun(3)) 8 print (fun(3,3)) 27
動態參數
*默認輸入的參數,所有放置在元組中
def fun(*arg:) print (args) fun (11,22) (11,22)
**默認輸入的參數,所有放置在字典中
def fun(**args): print(args) fun(k1=11,k2=22) {k1:11,k2:22}
在同時有一個*和兩個*的時候,定義默認參數時一個*必定要在前面
def fun(*args,**qwargs): print(args) print(qwargs) fun(22,33,k1=22,k2=33) (22,33) {'k2':33,'k1':22}
在python中格式化輸出%s與%d,函數中也有格式話輸出format()
s="i am {0},age{1}".format("alex",18) s="i am {0},age{1}".format(*["alex",18]) s="i am {name},age{age}".format(name="alex",age=18) s="i am {0},age{1}".format(**dic) s="i am alex,age 18" #輸出結果
變量的做用域
在python腳本中,不一樣的函數能夠具備相同的參數名,在函數中已經聲明過變量名,在函數外還能夠繼續使用,而在腳本運行過程當中,其值並不相互影響
在python中,做用域能夠分爲內置做用域和全局做用域和局部做用域,內置做用域是python預先定義的,全局做用域是所編寫的整個腳本,局部做用域是某個函數內部範圍
若是函數中使用函數外的變量,則能夠在變量名前使用global關鍵字
def fun(x): #聲明一個函數 a=[1] #定義一個名爲a的列表 a.append(x) print(a) a=[2,3,4] #在函數外定義一個名爲a的列表 fun(2) [1,2] a #輸出a的值
def fun(x): #聲明一個函數 global a return a+x a=5 fun(3) 8 a=2 fun(3) 5
默認定義的全局變量所有大寫,局部變量所有小寫
三元計算:
if 1==1:
name="john"
else:
name="hehe"
name="john" if 1==1 else "hehe"
最簡單的函數:用lambda表達式
用lambda適用於定義一個小型的函數,在函數中僅能包含單一的參數表達式,而不能包含其餘的語句。在lambda中也能夠調用其餘的函數。
def fun(): print ('lambda') f= lamdba:fun() f() lambda def f1(a1): return a1+100 f2=lambda a1:a1+100 #lambda參數:函數體 ret=f1(10) print(ret)
內置函數:
取絕對值
def abs() f=abs(-1) f=1
判斷真假的函數
def all() #當all的參數裏所有爲真時,all()爲真,當all裏有一個參數爲假時,即爲假 f= [11,22] all(f)爲turn f=[11,0] all(f)爲false def any() f=[11,0] any(f)爲turn
按照編碼,轉換字節類型
def byte() n=bytes(s,encoding="utf8") n=bytes(s,encoding="gbk")
判斷對象能不能被調用 若是能夠返回Turn
def callable()
基於ascii碼數字與字母之間的轉換
def chr() #數字轉換字母 def ord() #字母轉換數字
隨機產生數字 random模塊
import random li=[] for i in range(6): r=random.randrange(1,5) if r==2 or r==4 num=random.randrange(0,10) li.append(str(num)) else: temp=random.randrange(65,91) c=chr(temp) li.append(c) result = "".join(li) print(result)
def compile() 編譯代碼 def eval() 接收字符串 將把字符串變成一個表達式執行 S=8*8 ret=eval(s) print(ret) 64
def exec() 執行代碼
def delattr getattr
def dict() 字典 def dir() 快速獲取對象類提供功能 def divmod(100,10)返回元組 元組的元素爲商和元組 def isinstance()判斷元素是否屬於實例或類 a="li" r=isinstance(a,str) print(r) Turn
def filter() #循環第二個參數,讓每一個循環元素執行函數,若是函數返回值Turn,表示 filter (函數,可迭代的類) def f2(a): if a>22: return True 函數也可使用lambda表達式寫入 好比F2=lambda a: a>33.帶入 li=[11,22,33,44,55] filter(lambda a: a>33,li) ret=filter(f2,li) print(list(li))
def map() #循環第二個參數 讓每一個元素循環執行 函數fa,返回結果 map(函數,可迭代) li=[11,22,33,44,55] def fa(a) return a+100 result=map(f2,li) print(result)
def float() 將字符串修改爲格式化 def format() 字符串格式化 def frozenset() 不可變集合
def globals() 獲取全部的全局變量 def local() 獲取全部的局部變量
def hash() 生成哈希值 def id() 查看內存地址 def iter() 建立迭代器 def len() 查看長度
def max() 求最大值 def min() 求最小值 def sum() 求和
def paw() 平方 t=paw(2,10) print(t) 1024
def reversed() 使可迭代參數翻轉 def round(1,8) 使數字四捨五入 2 def slice() 切片的功能
發郵件
import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('郵件內容','plain','utf-8') msg['From'] = formataddr(["發件",'975910711@qq.com']) msg['To'] = formataddr(["收件",'975910711@qq.com']) msg['Subject'] = "主題" server = smtplib.SMTP("smtp.qq.com".25) server.login("1343612327@qq.com","郵箱密碼") server.sendmail('1343612327@qq.com',['975910711@qq.com',],msg.as_string()) server.quit()