zoukankan      html  css  js  c++  java
  • 函数的基本定义

    #coding:utf-8
    
    #定义函数
    def mail():
        print("hello world")
    
    #调用,两种都可以
    mail()
    f = mail
    f()

    #函数执行顺序(遇到return关键字,则中断函数,不在继续执行函数内容了)
    def show():
        print("a")
        return [11,22]
        print("b")
    
    ret = show()
    print(ret)  #不再输出"b"
    # a
    # [11, 22]

    #函数返回值
    def mail():
        import smtplib
        from email.mime.text import MIMEText
        from email.header import Header
        # 第三方 SMTP 服务
        mail_host = "smtp.qiye.163.com"              # 设置服务器
        mail_user = "luolin.luo@wearetechman.com"    # 用户名
        mail_pass = "pwd@4735"                       # 口令
    
        sender = 'luolin.luo@wearetechman.com'  # 发送
        receivers = ['729414559@qq.com']        # 接收
    
        # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
        message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
        message['From'] = Header("测试接收", 'utf-8')
        message['To'] = Header("测试发送", 'utf-8')
    
        subject = 'Python SMTP 邮件测试'
        message['Subject'] = Header(subject, 'utf-8')
        try:
            smtpObj = smtplib.SMTP()
            smtpObj.connect(mail_host,25)
            smtpObj.login(mail_user, mail_pass)
            smtpObj.sendmail(sender, receivers, message.as_string())
            return "邮件发送成功"         #函数返回值
        except smtplib.SMTPException:
            return "Error:无法发送邮件"   #函数返回值
    
    #执行函数(并获取返回值,如果函数没有定义返回值则返回"None")
    ret = mail()
    print(ret)

    #函数的普通参数,形参
    def mail(user):
        #给多个用户发送邮件
        import smtplib
        from email.mime.text import MIMEText
        from email.header import Header
        # 第三方 SMTP 服务
        mail_host = "smtp.qiye.163.com"              # 设置服务器
        mail_user = "luolin.luo@wearetechman.com"    # 用户名
        mail_pass = "pwd@4735"                       # 口令
    
        sender = 'luolin.luo@wearetechman.com'       # 发送
        receivers = [user,]                          #user为传递进来的参数(收件人)
    
        # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
        message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
        message['From'] = Header("测试接收", 'utf-8')
        message['To'] = Header("测试发送", 'utf-8')
    
        subject = 'Python SMTP 邮件测试'
        message['Subject'] = Header(subject, 'utf-8')
        try:
            smtpObj = smtplib.SMTP()
            smtpObj.connect(mail_host,25)
            smtpObj.login(mail_user, mail_pass)
            smtpObj.sendmail(sender, receivers, message.as_string())
            return "邮件发送成功"
        except smtplib.SMTPException:
            return "Error:无法发送邮件"
    
    #接收邮件列表
    user_list = ['729414559@qq.com','316374573@qq.com']
    #循环发送
    for n in user_list:
        ret = mail(n)  # 调用函数时给函数定义的形参(user)传递一个值
        print(ret)

    #函数的默认参数
    
    #无参数:
    #show():  -->show()
    
    #一个参数:def show(arg):    print(arg)show("ssss")
    
    #两个参数:def show(arg,bbb):    print(arg)show("ssss","dfs")
    
    #默认参数(形参加个"="号就是默认参数。默认参数一定要放在参数的后面)def show(a1,a2=999):    print(a1,a2)#show(111)      #调用时只传递了一个参数show(111,888)   #调用时给默认参数传参,会把默认参数覆盖
    
    #指定参数
    def show(a1,a2):
        print(a1,a2)
    show(a2=111,a1=888)   #调用时候,直接指定参数给形参传递值

    #函数的动态参数
    def show(*arg):                   #*arg表示传入一个元组
        print(arg)
        print(type(arg))
    show(1,2,3,"age")
    
    
    def show(**arg):                  #**arg表示传入一个字典(格式为:key=value)
        print(arg)
        print(type(arg))
    show(n1=78,n2="name")
    
    
    def show(*args,**kwargs):         #同时传入元组和字典数据,(*args表示元组,**kwargs表示字典)
        print(args,kwargs)
        print(type(args),type(kwargs))
    show(1,2,3,"你好",n1=78,n2="name")
    #它自动会把元组和字典数据分离传入:(1, 2, 3, '你好') {'n2': 'name', 'n1': 78}
    
    
    def show(*args,**kwargs):           #同时传入元组和字典变量
        print(args,kwargs)
        print(type(args),type(kwargs))
    
    tuple_data = (1,2,3,4,"你好")
    dict_data = {"n1":"name","n2":"age"}
    #show(tuple_data,dict_data)
    #如果以上这样直接传入元组和字典的变量,则结果为传入了一个元组类型:((1, 2, 3, 4, '你好'), {'n1': 'name', 'n2': 'age'})
    
    show(*tuple_data,**dict_data)
    #给传入的元组变量加*,然后给传入的字典变量加**就能分别传入对应的数据了

    #使用动态参数实现字符串的格式化
    
    s1 = "{0} is {1}"
    li = ['you','sb']
    #result = s1.format('you','sb')
    result = s1.format(*li)                               #传入列表内容,对应格式化的字符串
    print(result)
    
    s1 = "{name} is {show}"
    result = s1.format(name="you",show="sb")             #传入列表内容,对应格式化的字符串
    print(result)

    #lambda 表达式(lambda会自动加返回值)
    
    #一般函数的写法
    def func(a):
        b = a + 1
        return b
    result = func(4)
    print(result)


    #lambda表达的写法 func = lambda a:a+1 #创建形参a。函数内容a+1,并把a的结果return result = func(4) print(result)
  • 相关阅读:
    char *s 和char s[]的区别
    Loadrunner时间函数、用时间生成订单编号例子
    loadrunner获取毫秒及字符串替换实现
    关联的特殊应用
    LR中的时间戳函数web_save_timestamp_param
    使用 If-Then-Else 逻辑进行分支
    ArcGIS中国工具3.2新功能
    运行模型,COM错误,解决问题步骤
    arcgis python 更新日期为随机数
    使用LAS数据集创建DEM和DSM
  • 原文地址:https://www.cnblogs.com/l729414559/p/6823562.html
Copyright © 2011-2022 走看看