python教育学_跟着老男孩教育学Python开发【第三篇】:Python函数
set
無序,不重復(fù),可嵌套。
函數(shù)
創(chuàng)建函數(shù):
1、def關(guān)鍵字,創(chuàng)建函數(shù)
2、函數(shù)名
3、()
4、函數(shù)體
5、返回值
發(fā)郵件函數(shù)def sendmail():
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
#三個(gè)參數(shù):第一個(gè)為文本內(nèi)容,第二個(gè) plain 設(shè)置文本格式,第三個(gè) utf-8 設(shè)置編碼
msg = MIMEText(‘郵件內(nèi)容‘,‘plain‘,‘utf-8‘)
msg[‘From‘] = formataddr(["發(fā)件人名稱",‘發(fā)件人郵箱‘])
msg[‘To‘] = formataddr(["哈哈",‘收件人郵箱‘])
msg[‘Subject‘] = "郵件主題"
server = smtplib.SMTP("smtp地址",端口)
#需要在開啟SMTP,否則發(fā)送失敗
server.login("發(fā)件人郵箱","密碼")
server.sendmail(‘發(fā)件人郵箱‘,[‘收件人郵箱‘],msg.as_string())
server.quit()
sendmail()
函數(shù)中的returndef f1():
print(123)
#在函數(shù)中,一旦執(zhí)行return,函數(shù)執(zhí)行過程立即終止
return "111"
print(456)
r = f1()
print(r)
函數(shù)的默認(rèn)返回值Nonedef f2():
print(123)
r = f2()
print(r)
普通參數(shù)#形參【形式參數(shù)】:xx
def sendmail(xx,content):
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
#捕獲異常
try:
msg = MIMEText(content,‘plain‘,‘utf-8‘)
msg[‘From‘] = formataddr(["Golden",‘發(fā)件人地址‘])
msg[‘To‘] = formataddr(["哈哈",‘收件人地址‘])
msg[‘Subject‘] = "主題"
server = smtplib.SMTP("smtp.126.com",25)
server.login(‘發(fā)件人地址‘,‘密碼‘)
server.sendmail(‘發(fā)件人地址‘,[xx],msg.as_string())
server.quit()
except:
#發(fā)送失敗
return False
else:
#發(fā)送成功
return True
#實(shí)際參數(shù):收件人1\收件人2
# ret = sendmail("收件人1")
# ret = sendmail("收件人2")
while True:
em = input("請輸入收件人郵箱地址:")
result = sendmail(em,"你好")
if result == True:
print("發(fā)送成功")
else:
print("發(fā)送失敗")
默認(rèn)參數(shù)def send(xx,content,hh="ok"):
print(xx,content,hh)
print("發(fā)送郵件成功:",xx,content)
return True
send("hahaha",‘hello‘)
send("hahaha",‘hello‘,‘bbbb‘)
注意:如果需要給某個(gè)參數(shù)指定默認(rèn)值,該參數(shù)必須放在參數(shù)列表的最后。
指定參數(shù)def send(xx,content):
print(xx,content)
return True
send("hahaha","hello")
send(content="hahaha",xx="hello")
動(dòng)態(tài)參數(shù):*def f1(*args):
print(args,type(args))
f1(11,22,33,"haha","hello")
li = [12,23,33,"hahaha","hi"]
f1(li)
f1(*li)
注意:*默認(rèn)將傳入的參數(shù)全部放置在元組中,f1(*li)。
動(dòng)態(tài)參數(shù):字典(**)def f1(**args):
print(args,type(args))
f1(n1="alex",kk=18)
dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
f1(**dic)
注意:**默認(rèn)將傳入的參數(shù)全部放置在字典中,f1(**dic)。
萬能參數(shù)def f1(*args,**kwargs):
print(args)
print(kwargs)
f1(11,22,33,44,k1=‘v1‘,k2=‘v2‘)
注意:*args,**kwargs順序不能改變。
動(dòng)態(tài)參數(shù)實(shí)現(xiàn)format功能s = "i am {0},age {1}".format("alex",18)
print(s)
s1 = "i am {0},age {1}".format(*["alex",19])
print(s1)
s2 = "i am {name},age {age}".format(age=20,name=‘a(chǎn)lex‘)
print(s2)
dic ={‘name‘:‘a(chǎn)lex‘,‘a(chǎn)ge‘:21}
s3 = "i am {name},age {age}".format(**dic)
print(s3)
猜一猜輸出def f1(a1,a2):
print(‘+‘)
return a1 + a2
def f1(a1,a2):
print(‘*‘)
return a1 * a2
ret = f1(8,8)
print(ret)
def f1(a1):
a1.append(999)
li = [11,22,33,44]
f1(li)
print(li)
注意:函數(shù)參數(shù)傳遞的是引用。
全局變量NAME = "alex"
AGE = 22
def f1():
num = 18
NAME = "haha"
#修改全局變量:age
global AGE
AGE = 25
print(num,AGE,NAME)
def f2():
num = 19
print(num,AGE,NAME)
f1()
f2()
注意:全局變量重新賦值需要用global,對于列表或字典,可修改,不可重新賦值。定義全局變量全部大寫。
函數(shù)實(shí)現(xiàn)登錄與注冊def login(username,password):
"""
用于用戶登錄
:param username: 用戶輸入的用戶名
:param password: 用戶輸入的密碼
:return:True,登錄成功;False,登錄失敗
"""
f = open("db",‘r‘)
#逐行讀取
for line in f:
#用"|"進(jìn)行分割
line_list = line.strip().split("|")
#匹配是否正確
if line_list[0] == username and line_list[1] == password:
return True
return False
def register(username,password):
"""
用戶注冊
:param username:用戶名
:param password:密碼
:return:默認(rèn)返回None
"""
f = open("db",‘a(chǎn)‘)
temp = "\n"+username + "|" + password
f.write(temp)
f.close()
def main():
t = input("1:登錄;2:注冊")
if t == "1":
user = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
r = login(user,pwd)
if r:
print("登錄成功")
else:
print("登錄失敗")
elif t == "2":
user = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
register(user,pwd)
main()
三元運(yùn)算(三目運(yùn)算)if 1 == 1:
name = "alex"
else:
name = "golden"
#上面代碼等價(jià)于
name = "alex" if 1 == 1 else "golden"
lambda表達(dá)式def f1(a1):
return a1 + 100
#等價(jià)上面的代碼
f2 = lambda a1:a1 + 100
ret = f1(10)
print(ret)
r2 = f2(9)
print(r2)
內(nèi)置函數(shù)#abs():取絕對值
n = abs(-1)
print (n)
#all():所有為真,才為真
#any():任何一個(gè)為真,就是真
n = all([1,2,3,4,[]])
print(n)
n2 = any([1,[],0,"",None])
print(n2)
#ascii():自動(dòng)執(zhí)行對象的 _repr_方法
class Foo:
def _repr_(self):
return "111"
n = ascii(Foo())
print(n)
#bin():轉(zhuǎn)二進(jìn)制
#oct():轉(zhuǎn)八進(jìn)制
#hex():轉(zhuǎn)十六進(jìn)制
print(bin(5))
print(oct(9))
print(hex(15))
#utf-8 一個(gè)漢字:三個(gè)字節(jié)
#gbk 一個(gè)漢字:二個(gè)字節(jié)
#utf-8,一個(gè)字節(jié)八位,一個(gè)漢字三個(gè)字節(jié)
s = "李杰"
#字符串轉(zhuǎn)換字節(jié)類型
#bytes(需要轉(zhuǎn)換的字符串,按照什么編碼)
n = bytes(s,encoding="utf-8")
print(n)
n = bytes(s,encoding="gbk")
print(n)
#字節(jié)轉(zhuǎn)化成字符串
new_str = str(bytes("李杰",encoding="utf-8"),encoding="utf-8")
#1、打開文件
#只讀
f = open(‘db‘,‘r‘)
#只寫,先清空源文件
f = open(‘db‘,‘w‘)
#文件存在,報(bào)錯(cuò);不存在,創(chuàng)建并寫內(nèi)容
f = open(‘db‘,‘x‘)
#追加
f = open(‘db‘,‘a(chǎn)‘)
#2、操作文件
#通過源碼查看功能
f.read()
f.write()
#3、關(guān)閉文件
f.close()
with open(‘db‘) as f:
pass
f = open(‘db‘,‘r‘,encoding="GBK")
#f = open(‘db‘,‘r‘,encoding="utf-8")
data = f.read()
print(data,type(data))
f.close()
f = open("db","r+",encoding="utf-8")
#如果打開模式無b,則read,按照字符讀取
data = f.read()
#獲取當(dāng)前指針的位置(字節(jié))
print(f.tell())
print(data)
#移動(dòng)當(dāng)前指針到固定位置(字節(jié))
f.seek(1)
#當(dāng)前指針位置開始向后覆蓋
f.write("777")
f.close()
f = open(‘db‘,‘rb‘)
data = f.read()
print(data,type(data))
f = open(‘db‘,‘a(chǎn)b‘)
f.write(bytes("李杰",encoding="utf-8"))
f.close()
flush()強(qiáng)刷:f = open("db",‘a(chǎn)‘)
f.write("123")
#強(qiáng)制寫入
f.flush()
input("adsdds")
readable()查看文件是否可讀,返回True或False。f = open("db",‘w‘)
print(f.readable())
readline()僅讀取一行數(shù)據(jù),當(dāng)文件特別大的時(shí)候不至于導(dǎo)致內(nèi)存撐爆。f = open("db",‘r‘)
f.readline()
f.readline()
truncate()截?cái)?#xff0c;指針后面的數(shù)據(jù)清空f = open("db",‘r+‘,encoding="utf-8")
f.seek(3)
f.truncate()
f.close()
for循環(huán)打開的文件對象:f = open("db",‘r‘)
for line in f:
print(line)
f.close()
將文件1的前十行寫入文件2:with open(‘db1‘,‘r‘,encoding="utf-8") as f1,open(‘db2‘,‘w‘,encoding="utf-8") as f2:
times = 0
for line in f1:
times += 1
if times <= 10:
f2.write(line)
else:
break
將文件的某個(gè)字符串進(jìn)行替換:with open(‘db1‘,‘r‘,encoding="utf-8") as f1,open("db2",‘w‘,encoding="utf-8") as f2:
for line in f1:
new_str = line.replace("alex","st")
f2.write(new_str)
原文:http://www.cnblogs.com/yinshoucheng-golden/p/6116758.html
總結(jié)
以上是生活随笔為你收集整理的python教育学_跟着老男孩教育学Python开发【第三篇】:Python函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神经网络训练3次就准确率不变_1组高效徒
- 下一篇: UUID 正在被 NanoID 取代?