zoukankan      html  css  js  c++  java
  • 函数

     

    深拷贝

    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





  • 相关阅读:
    Html 中 XHTML Strict 和 Transitional 的区别
    ExtJs 表单验证的方法总结
    C# 获取枚举值描述信息的方法
    VS2005查找替换插件
    自定义(手动调整).net中图像的调色板(How to adjust (customize) image's palette in .net?)
    保存Graphics对象到Bitmap对象
    javascript原生Dictionary类
    javascript中动态加载js、vbs脚本或者css样式表
    各种图像处理类库的比较及选择(The Comparison of Image Processing Libraries)
    .net中比较两幅图片是否相同
  • 原文地址:https://www.cnblogs.com/liuzhiyun/p/7105860.html
Copyright © 2011-2022 走看看