• 函数


     

    深拷贝

    1.对于数字、字符串而言,赋值、浅拷贝、深拷贝都无意义,因为永远都指向一个内存地址(pyrhon内部对数字和字符串优化)

    2. 列表、字典

       浅拷贝:只拷贝最外层

      深拷贝:除了最内层的(数字、字符串)不拷贝外,全部拷贝

    程序从上到下运行遇到关键字 (如def  名字XX()) 不继续执行 会把代码放到名为XX的内存中去,直接跳过运行到while True 如果遇到XX就会调用内存中

    名为XX的地址 运行一次,以此类推。

    def email ():

         print("我要发邮件了")

         return "123"

    s= email()

    print(s)

    #执行函数

    #函数return后面是什么值,s等于返回值,如果没值 默认None

    函数返回值:return (一旦遇到return,函数内部return以下的代码就不运行了)

    def email():
    if True:
    return True
    else:
    return False
    s=email()
    if s:
    print("好")
    else:
    print("不好")

    参数:p为形式参数,s1 s2为实际参数。

    def Kauai(p):
    if p=="123":
    return True
    else:
    return False
    s1 = Kauai("123")
    s2 = Kauai("1256")
    if s2:
    print("好")
    else:
    print("不好")
    #发送邮件
    def email(p,text):
    import smtplib
    from email.mime.text import MIMEText
    from email.utils import formataddr
    ret= True
    try:
    msg = MIMEText("text","plain","utf-8")
    msg["From"] = formataddr(["武沛齐","wptawy@126.com"])
    msg["To"] = formataddr(["幻落瞳","1484029127@qq.com"])
    msg["Subject"]= "主题"

    server =smtplib.SMTP("smtp.126.com",25)
    server.login("wptawy@126.com" , "WW.3945.59")
    server.sendmail("wptawy@126.com" ,[p,], msg.as_string())
    server.quit()
    except:
    #如果上述try中的代码出现错误,自动执行except中的代码
    ret= False
    return ret

    email ("1484029127@qq.com","ok")

    形参有几个,实参就应该有几个 数量一致,一一对应(默认是按照顺序)

    指定形参传入实参,可以不按照顺序例如func1(p="xx",a="xxxxx")#指的是实参

    函数可以有默认参数,但是有默认值得参数一定要放在参数的尾部。
    def drive(p,name="刘飞"):
    temp = name +"开车去东北"
    return temp
    ret = drive(11,"刘")
    print(ret)
    ret = drive(11)
    print(ret)
    动态参数:
    def f1(p,b,*a,**aa):     #一个*默认为元组类型,二个**默认为字典类型
    print(p,type(p)) #默认为int
    print(b, type(b)) #默认为int
    print(a,type(a)) #默认为tuple
    print(aa,type(aa)) #默认为dict
    f1(11,22,33,44, k1=123,k2=123)
    为动态参数传入列表、字典、元组
    *args, *列表
    **kwargs , **字典
    # def f1(*args):
    # print(args,type(args))
    # li=(11,22,33)
    # f1(li,123,256) # args=((11,22,33),123,256)
    # f1(*li,123,256) # args= (11,22,33,123,256)

    def f1(**kwargs):
    print(kwargs,type(kwargs))
    dict={"k1":"123","k2":"256"}
    f1(k1=dict) #kwargs={"k1":{"k1":"123","k2":"256"}}
    f1(**dict,k3=789) # kwargs={"k1":"123","k2":"256","k3":"789"}

    全局变量和局部变量:全局变量:全部函数都能调用,全局变量是不可修改,想要修改全局变量就用global关键字,如果没有global关键字
    会默认在函数里面又创建了一个局部变量。
    局部变量:只能在该函数里面用,其他函数不能调用。
                     全局变量都大写,局部变量都小写(行业默认)
    PERSON="liu"
    def func1():
    a=123
    global PERSON
    PERSON="yuan"
    print(a)
    print(PERSON)
    def func2():
    a=456
    print(PERSON)
    print(a)
    func1()
    func2()
    输出结果:

                   123
                  yuan
                  yuan
                  456

    
    
    PERSON="liu"
    def func1():
    a=123
    # global PERSON
    PERSON="yuan"
    print(a)
    print(PERSON)
    def func2():
    a=456
    print(PERSON)
    print(a)
    func1()
    func2()

    输出结果

    123
    yuan
    liu
    456





  • 相关阅读:
    从scanf的学习接口设计
    特现C语言编程特点的小代码,itoa,数值转换成字符串
    So many good projects for studying C programming lanuage.
    重要算法代码
    选择一本C++教材
    4412 内核模块传参数
    4412 GPIO初始化
    4412 物理地址
    4412 杂项设备
    4412 Linux设备总线
  • 原文地址:https://www.cnblogs.com/liuzhiyun/p/7105860.html
Copyright © 2020-2023  润新知