内容详细

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 函数返回值

  1. 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"))