3.python基础知识点3

函数

1.初识函数

函数到底是个什么?

函数,一大堆代码,给这一堆的代码再起个名字。

# 定义一个函数
def 函数名()://def hanshu():
    print(123)
    print(123)
    print(123)
    print(123)
    ....

# 执行函数(函数内部代码就会执行)
函数名()
def get_info_data():
    print("欢迎使用xxx")
    v1 = 123
    v2 = 567
    v3 = v1 + v3
    if True:
        print(123)
	else:
        print(999)
	print("END")
    
get_info_data()

了解函数是什么了,那么他的应用场景是什么?

  • 面向过程编码:按照业务逻辑从上到下去累代码。

    • 监控系统,监控公司的电脑。

      print("欢迎使用xx监控系统")
      
      if CPU占用率 > 90%:
          发送报警邮件-10if 硬盘使用率 > 95%:
          发送报警邮件-10if 内容使用率 > 98%:
          发送报警邮件-10
    • 棋牌游戏扎金花

      # 1.生成一副扑克牌6行代码
      
      # 2.洗牌3行代码
      
      # 3.给5个玩家发三张牌 15行代码
      
      # 4.玩家手中牌的大小比较(80行)
      	- 是否是豹子(大小)
          - 是否是同花顺(大小)
          - 是否是同花(大小)
          - 是否是对子(大小)
          - 是否是单点(大小)
      
  • 函数式编程:用函数来写代码。

    • 监控系统,监控公司的电脑【增强代码的重用性】【应用场景1】

      def 发送邮件():
          发送报警邮件-10print("欢迎使用xx监控系统")
      
      if CPU占用率 > 90%:
          发送邮件()
          
      if 硬盘使用率 > 95%:
          发送邮件()
          
      if 内容使用率 > 98%:
          发送邮件()
      
    • 棋牌游戏扎金花,【增强代码的可读性】

      def 发牌():
          ...
          ..
      
      def 是否是豹子():
          ..
          ..
          
      def 是否是同花顺():
          ..
          ..
          
      def 是否是同花():
          ..
          ..
          
      def 是否是对子():
          ..
          ..
          
      def 是否是单点():
          ..
          ..
          
      # 1.生成一副扑克牌6行代码
      
      # 2.洗牌3行代码
      
      # 3.给5个玩家发三张牌 15行代码
      发牌()
      
      # 4.玩家手中牌的大小比较(80行)
      是否是豹子()
      是否是同花顺()
      ...
      

函数应用场景:

  • 反复用到重复代码时,可以选择用函数编程。【增强代码的重用性】
  • 业务逻辑代码太长,可以选择用户函数将代码拆分。【增强代码的可读性】

2.Python代码发邮件

  • 注册邮箱:网易126、163邮箱。

  • 配置
    在这里插入图片描述

    大家需要去获取授权码,通过代码发邮件,再发送邮件时不要告诉我的账号和密码。
    所以,Python代码后续需要使用的:
    	- 账号
    	- 授权码(不是网易邮箱的密码)
    	
    保存好自己的授权码。
    
    SMTP服务器: smtp.163.com
    

    在这里插入图片描述

  • 代码发邮件

    # 1.将Python内置的模块(功能导入)//该文件名不能叫smtplib或者email
    import smtplib
    from email.mime.text import MIMEText
    from email.utils import formataddr
    
    # 2.构建邮件内容
    msg = MIMEText("领导早上好,领导今天辛苦了。", "html", "utf-8")  # 内容,"html", "utf-8"为固定形式
    msg["From"] = formataddr(["xqs", "youxiang@126.com"])  # 自己名字/自己邮箱
    msg['to'] = "888888888@qq.com"  # 目标邮箱
    msg['Subject'] = "360一天"  # 主题
    
    # 3.发送邮件
    server = smtplib.SMTP_SSL("smtp.126.com")
    server.login("youxiang@126.com", "WOAIJWEKAMDJXIF")  # 账户/授权码
    server.sendmail("youxiang@126.com", "888888888@qq.com", msg.as_string())  # 自己邮箱/目标邮箱/内容
    server.quit()
    

3.函数的参数

3.1 基本使用

def 函数名(形式参数1,形式参数2,形式参数3): # 简称形参
    函数内部代码,将形式参数当做是变量来使用。

    
# 执行函数时,传入的值:实际参数(实参)
函数名(1,2,3)
def my_func(a1,a2,a3):
    result = a1 + a2 - a3
    print(result)
    
# 执行函数
my_func(1,4,1)

# 执行函数
my_func(11,14,99)

在执行函数时,传入参数时候一般有两种模式:

  • 位置传参

    def my_func(a1,a2,a3):
        result = a1 + a2 - a3
        print(result)
        
    # 执行函数
    my_func(1,4,1)//my_func(1,2,3)
    
    # 执行函数
    my_func(11,14,99)
    
  • 关键字传参

    def my_func(a1,a2,a3)://my_func(a1 = 1,a2 = 2,a3 = 3)
        result = a1 + a2 - a3
        print(result)
        
    my_func(a1=11,a2=99,a3=10)
    
    my_func(a2=99,a3=10,a1=10)
    
  • 混合使用

    def my_func(a1,a2,a3):
        result = a1 + a2 - a3
        print(result)
    
    # 位置传参在前面,关键字传参是在后面!!!只能位置传参在前,关键字传参在后
    my_func(123,99,a3=10)
    
    my_func(123,a2=99,a3=10)
    

注意:

  • 函数要求传入几个参数,你就要传入几个参数。
  • 参数可以是任意类型:None、bool、int、str、list、dict…

3.2 默认参数

def func(a1,a2,a3):
    pass

func(1,2,3)

在定义函数时,也可以为某个参数设置默认值。

def func(a1,a2=1,a3=123):
    pass

# 位置传参
func(9)//没有传参的时候用默认值
func(9,10)
func(9,10,100)

# 关键字传参
func(a1=9)
func(a1=100,a2=9)
func(a1=100,a2=9,a3=123)

# 注意注意:函数定时设置的默认参数,只能放在最后。

3.3 动态参数

def func(a1,a2,a3=123):
    pass

func(1,2)

# 参数传入的都是有限的个数。
    def func(*a1)://*a1为可以传任意个参数
        # 用户传来的参数统一会被打包成元组
        # a1 = (1,)
        # a1 = (11,22,33)
        # a1 = (11,22,33,"xxxx",True)
        # a1 = (11,22,33,"xxxx",True, [11,22,33],999)
        # a1 = ( [11,22,33,44,55] ,  )
        # a1 = ( (11,22,33),   )
        print(a1)
        
    # 可以通过位置参数的形式传入n个参数。
    func(1)
    func(11,22,33)
    func(11,22,33,"xxxx",True)
    func(11,22,33,"xxxx",True, [11,22,33],999)
    
    func( [11,22,33,44,55] )
    func( (11,22,33) )
    func()
    
  • **

    def func(**dt):**dt为可以传任意个参数
        # 自动将数据打包整字典
        # dt = {"a1":1,"b1":88,"cc":99}
        print(dt)
        
    # 必须用关键字的形式传参
    func(a1=1,b1=88,cc=99)//里面代指参数也传进去
    func(a1=1,b1=88,cc=99)
    func()
    
  • *

    def func(*x1,**dt):
        # x1 = (11,22,3)   dt = {"xx":123,"uu":999, "b12":"root"}
        # x1 = ()    dt = {}
        pass
    
    func(11,22,3, xx=123,uu=999,b12="root")
    func()
    
    # 注意实现
    #   1.定义函数顺序 //只能一个*在前,    *x1,**dt
    #	2.执行函数传参的时,位置传参在前,关键字传参在后。
    #	3.当不传参数时,# x1 = ()    dt = {}空元组,空字典
    
  • 混合之前的使用

    def func(a1,a2,a3,*x1,**dt):
        pass
    
    func(11,22,33,44,55,66,77,a1=123)//a1,a2,a3为11,22,3344,55,66,77,*x1,
    

重点:

  • * 支持传入多个参数,自动会将参数打包成 元组 、字典。

  • 【潜规则】在定义动态参数时,*args、**kwargs

    def func(*args,**kwargs)://*args  **kwargs
        pass
    

4.函数的返回值

  • print,输出,可以在任何的地方使用。
  • 函数的返回值

在以后的开发过程中,定义一个函数,帮助你实现某个功能,希望函数给你产出一个结果。

def func(a1,a2):
    res = a1 + a2
    return res

# 1.执行func函数
# 2.将函数执行的返回值 赋值给data
data = func(100,200)

关于返回值:

  • 返回值可以是任意类型

    def f1():
        return 123
    
    v1 = f1()
    
    def f1():
        return [11,22,33,44]
    
    v1 = f1()
    
    def f1():
        return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值