• 函数(def)


    一、为什么要使用函数:

    面向过程的编程在代码里有很多代码是可以重复利用的,如果使用面向过程编程会使代码显得纷繁复杂,不利于他人和自己日后的阅读。而在函数式编程里,则可以把每个可重复利用的功能封装在一个函数里,当用的时候可以直接调用这个函数,使代码更加的简洁、易读。

    二、函数的定义方式:

    1 def f1():
    2     pass

    1、def:函数关键字
    2、f1:函数名

    3、():形式参数(变量的作用)

    三、执行函数:

    1、方式:f1():

    2、函数体执行完毕有return值,赋值给f1(),默认返回值为None。

    3、函数在代码里不执行,只有在调用时才执行。

    4、f1()代表的实际参数。

    四、参数:

    函数在传递参数时传递的是变量的引用而非再次创建新的内存。

    1 def f1(a):
    2     a.append(9)
    3 li=[11,22,33,44]
    4 f1(li)
    5 print(li)

    1、普通参数:有几个形式参数就传几个实际参数,默认按顺序一 一对应。

    1 def f1(name,age):
    2     print(name)
    3     print(age)
    4 f1("Guido",27)

    2、默认参数:可以通过变量的形式指定参数,默认参数要放在参数列表的最后面。

    1 1 def f1(name,age,who="you")
    2 2     print(name,age,who)
    3 3 f1("guido",27)                       #who="you"
    4 4 f1("guido",27,"she")               #who=“she”

    3、动态参数:

    (1)多接收值的形式参数(*args)输出形式为tuple:

        普通输入实际参数:传几个可按顺序接收几个。

        输入(*args)的实际参数:会把arges所指向的内容做一个for循环,把每个元素分别传入形式参数。

    (2)多接收值的形式参数(**kwargs)输出形式为dict:

        实际参数必须有key=value

        实际参数f1(**dic)把dic的内容整体以字典的形式传入(**kwargs)中

    (3)万能参数:

        def f1(*args,**kwargs)

    (4)可变长参数:

        def f1(a,*b,**c)

    def i(kargs, *args, **kwargs):
        print(kargs,type(kargs))
        print(args,type(args))
        print(kwargs,type(kwargs))
    i("kdk","111","ppp","uuu",a=1,b=2,c=3)
    

    4、format格式化:

    1 S1="I am {0}, age {1}".format("Guido",27)
    2 print(S1)
    3 S2="I am {0}, age {1}".format(*["alex",18])
    4 print(S2)
    5 S3="I am {name},age {age}".format(age=27,name="Guido"6 print(S3)
    7 dic={"name":"Guido","age":27}
    8 S4="I am {name},age {age}".format(**dic)
    9 print(S4)

    五、全局变量(所有作用域都可用):
    1、函数体本身就是一个作用域,作用域内的变量只有本作用域内才可以使用。

    2、局部变量优先在作用域内使用,没有再到全局变量里找到并使用。

    3、在作用域内可以对全局变量不可重新赋值,但可以修改。

    4、在作用域内若想修改全局变量,必须使用global。

    1 NAME=("Guido")
    2 def f1()
    3     global name
    4     name=("admirers")
    5     print(name)
    6 f1()
    7 print(name)

    5、全局变量要是用大写:NAME

    六、三元(三目)运算:

    三元运算又叫三目运算,其实就是if...else...的简写方式

    1 if 1==1:
    2     name=("Guido")
    3 else:
    4     name=("admirers")
    5 
    6 三元运算表达式:
    7 name=("Guido") if 1==1 else name=("admirers")

    七、lambda表达式(可描述简单的函数):

    1 def f1(a,b):
    2     return a+100
    3 
    4 f2=lambda a,b : a+100

    八、实例:

    1、登录注册

     1 def login(username,password):
     2 '''
     3     用户登录
     4     username:用户输入用户名
     5     password:用户输入密码
     6     return:True登陆成功
     7             False登录失败
     8 '''
     9     f=open("text","r")
    10     for line in f:
    11         line_list=line.strip().split("@")
    12         if line_list[0]==username and line_list[1]==password:
    13             return True
    14     return False
    15 
    16 
    17 def register(username,password):
    18 '''
    19     用户注册
    20     username:用户名
    21     password:密码
    22     return:None默认
    23 '''
    24     f=open("text","a")
    25     temp=(
    " + username + "@" + password)
    26     f.write(temp)
    27     f.close()
    28 
    29 
    30 def main():
    31     t=input("1:登陆;2:注册")
    32     if t=="1":
    33         user=input("请输入用户名:")
    34         pwd=input("请输入密码:)
    35         r=login(user,pwd)
    36         if r:
    37             print("登陆成功")
    38         else:
    39             print("登陆失败")
    40     elif t=="2":
    41         user=input("请输入用户名:")
    42         pwd=input(”请输入密码:“)
    43         register(user,pwd)


    2、发邮件(武沛齐老师范例)

     1 import smtplib
     2 from email.mime.text import MIMEText
     3 from email.utils import formataddr
     4   
     5   
     6 msg = MIMEText('邮件内容', 'plain', 'utf-8')
     7 msg['From'] = formataddr(["武沛齐",'wptawy@126.com'])
     8 msg['To'] = formataddr(["走人",'424662508@qq.com'])
     9 msg['Subject'] = "主题"
    10   
    11 server = smtplib.SMTP("smtp.126.com", 25)
    12 server.login("wptawy@126.com", "邮箱密码")
    13 server.sendmail('wptawy@126.com', ['424662508@qq.com',], msg.as_string())
    14 server.quit()
  • 相关阅读:
    【SpringBoot/Oracle】如何解决 “[error code]17056 不支持的字符集,在类路径添加orai18n.jar”
    Spring Initializr
    【SpringBoot】如何在SpringBoot工程启动时建表和填充数据
    最简SpringBoot工程,仅有Oracle支持,可作为起始工程
    【SpringBoot/MyBatis/Oracle】如何在SpringBoot工程中配置编撰一个访问Oracle数据库的MyBatis
    【MyBatis/Oracle】通过MyBatis执行Oracle的批量插入语句,插入千万数据进一表用时1h22m59s151ms
    ASP处理多语言版本的商务网站
    XML指南——XML CDATA
    .NET环境下五种邮件发送解决方案
    什麼是WPF?
  • 原文地址:https://www.cnblogs.com/Guido-admirers/p/6068702.html
Copyright © 2020-2023  润新知