内容详细
1.函数
1.1.面向过程: 可读性差/可重用差
1.2.面向对象:
🌰:面向过程发送邮件
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
msg_from='@qq.com'
msg_to='@qq.com'
#主题
content="亲耐的笨笨先森,你在干嘛😸O(∩_∩)O~~?"
msg=MIMEText(content)
msg['From']=msg_from
msg['To']=msg_to
msg["Subject"]="😊的gaogao"
server=smtplib.SMTP_SSL("smtp.qq.com",465)
server.login(msg_from,"密码")
server.sendmail(msg_from,msg_to,msg.as_string())
server.quit()
🌰:函数式编程
对应函数式编程:
2.函数基本结构
2.1 函数的定义
def 函数名():
#函数内容
v=[1,2,3,4]
print(v)
2.2 函数执行
注意:函数如果不被调用,则内部代码将永远不会被执行
函数名()
2.3 函数传递参数
1.形式参数:
2.实际参数:调用时候传递的参数
def func():
v=[1,2,3]
print(v)
func()
#传参
def func(index):#index:形参
v=[1,2,3]
print(v[index])
func(1)#1:实参
3.练习题
#1,请写一个函数,计算出列表中info=[11,22,33,44,55]中所有元素的和
def sum(item):
count+=item
print (count)
count=0
for ele in info:
count=sum(count,ele)
#2.计算出任意列表的元素之和
def get_sum(a1):
data=0
for item in a1:
data+=item
print(data)
get_sum([11,22,33])
#3.将两个列表拼接起来
def join_list(a1,a2):
result=[]
result.extend(a1)
result.extend(a2)
print(result)
join_list([1,2,3],[2,3,4])
#4.计算一个列表啊长度
v=[11,22,3,33]
len(v)
#原生写法
def my_len(arg):
count=0
for item in arg:
count+=1
print(count)
2.4 函数返回值
-
Return "内容":默认返回None
- 函数执行过程中,一旦遇到return ,则停止函数的执行
#基本结构
def func(arg):
#....
return 9 #返回值为9 默认:return None
val = func("aaa")
print(val)#9
2.练习
#1.让用户输入一段字符串,计算出字符串中有多少大写的A的字符,有多少个就在文件中写多少个”Gao"
#计算字母个数函数
def get_count(con):
sum_counter=0
for i in con:
if i=="A":
sum_counter+=1
return sum_counter
#写入文件函数
def write_file(line):
if len(line)==0:#判断是否有数据
return False #函数执行过程中,一旦遇到return ,则停止函数的执行
with open("a.txt",mode="w",encoding="utf-8") as f:
f.write(line)
return True#写入成功
cont=input("请输入:")
counter=get_count(cont)
write_data="Gao"*counter#多个字符串拼接
status=write_file(write_data)#接收写入文件是否成功的状态
if status:
print("写入成功")
else:
print("写入失败")
2.5 总结
#情况1:
def f1():
pass
f1()
#情况2:
def f2(a1):
pass
f2(123)
#情况3:
def f3():
return 1
v1=f3()
#情况4:
def f4(a1,a2):
return a1+a2
v2=f4(12,34)
1.练习
# 1.函数 计算列表中 有多少个数字,打印列表中有%s个数字
def get_count(info):
count = 0
for ele in info:
if type(ele) == int:
count += 1
temp = "列表中有%s个数字" % (count,)
print(temp)
v1 = [1, 2, "bs", "hh"]
get_count(v1)
- id(info)==id(v) #传递的是列表的引用,所以通过info形参可以改变实参
#2.写一个函数 ,找出列表中的索引位置为偶数位的 ,并返回偶数列表
def get_even_list(info):
even_list=info[::2]
return even_list
v=[1,2,3,4,5]
print(get_even_list(v))
#id(info)==id(v) #传递的是列表的引用
#所以通过info形参可以改变实参
#3.读取文件,将文件的内容构造成指定格式的数据,并返回
# alex|123|18
# eric|uiuf|19
#函数1
# def func(path):
# with open(path,mode="r",encoding="utf-8") as f:
# data=f.read().split('\n')
# ul=[]
# ul.extend(data)
# return ul
# print(func("a.log"))
#函数2
def func(path):
with open(path,mode="r",encoding="utf-8") as f:
info=[]
data=f.read().split('\n')#一行一个元素
for ele in data:#遍历每一个元素(一行内容)
ele=ele.split("|")#一个列表
info.append(ele)#一个列表
return info
print(func("a.log"))
#函数三
# def func(path):
# with open(path,mode="r",encoding="utf-8") as f:
# info=[]
# data=f.read().split('\n')#一行一个元素
# for ele in data:
# dict1={}
# ele=ele.split("|")#每个元素切割成列表
# dict1['name']=ele[0]
# dict1['pwd']=ele[1]
# dict1['tel']=ele[2]
# info.append(dict1)
# return info
# print(func("a.log"))