zoukankan      html  css  js  c++  java
  • 【python之路15】深浅拷贝及函数

    一、集合数据类型(set):无序不重复的集合,交集、并集等功能

    二、三元运算符

    三、深浅拷贝

    1)字符串和数字:深浅内存地址都一样

    2)其他:浅拷贝:仅复制最外面第一层

    • 深拷贝:除了最内层其他均拷贝

    四、函数:

    1)创建:def 函数名(参数)

    2)返回值

    •  return 返回值,如果不指定return则默认返回None
    • 一旦遇到return后面的代码不再执行

    3)参数

    • 形参、实参
    • 普通参数数量要一致并且一一对应
    • 指定参数,执行参数的时候指定形参=实参
    • 指定参数的默认值,默认值一定要放在参数的尾部
    • 动态参数  *args  **args,调用的时候可以使用*实参列表,这样相当于循环实参加入元组,**字典,可以直接传输字典不需要(key1=123,key2=456)
    def f1(*args):
        print(args)
    
    f1(11,22,33)
    #打印:(11, 22, 33)
    
    def f1(**kwargs):
        print(kwargs)
    
    f1(k1=11,k2=22)
    #打印输出:{'k1': 11, 'k2': 22}
    def f1(*args,**kwargs):
        print(args,kwargs)
    
    f1(11,22,33,k1=11,k2=22)
    #打印输出:(11, 22, 33) {'k1': 11, 'k2': 22}
    def f1(n,*args,**kwargs):
        print(n,args,kwargs)
    
    f1(11,22,33,k1=11,k2=22)
    #打印输出:11 (22, 33) {'k1': 11, 'k2': 22}
    def f1(*args):
        print(args)
    
    n = [11,22,33]
    f1(n)
    #打印输出:([11, 22, 33],)
    f1(*n)
    #打印输出:(11, 22, 33)
    def f1(**kwargs):
        print(kwargs)
    
    n = {"k1":11,"k2":22}
    #f1(n)
    #报错
    f1(**n)
    #打印输出:{'k1': 11, 'k2': 22}

    4)在python中传参数时,对列表、元组、字典类型传输的是引用

    1 def func1(args):
    2     args.append(123)
    3 
    4 li = [11,22,33]
    5 func1(li)
    6 print(li)  #输出[11, 22, 33, 123]

    五、局部变量和全部变量

    1)全局变量用大写,局部变量用小写

    2)全局变量在函数内部可以使用,但不能修改,如果要修改,那么要加global 变量名

    name='张三'
    def f1():
        name="李四"  #不会修改全局变量,会在函数内部新建一个变量
        return(name)
    
    def f2():
        return ("我的名字是" + name)  #可以使用全局变量
    
    def f3():
        global name  #加上global之后下面可以修改全局变量的值,加上global后相当于把name变成全局变量,如果外层没有name则声明全局变量name,如果有则引入全局变量name
        name = "王五"
        return name
    
    print(f1()) #李四
    print(f2()) #我的名字是张三
    print(f3()) #王五
    def func1():
        a = 10
        def func2():
            a = 20
            print(a)
        func2()
        print(a)
    
    func1()    #打印结果:20 10
    def func1():
        a = 10
        def func2():
            nonlocal a   #不作为局部变量,向上层找,但不能超出局部变量范围,不会找到全局变量
            a = 20
            print(a)
        func2()
        print(a)
    
    func1()    #打印结果:20 20

    函数:globals() 打印全局变量

            locals() 打印局部变量 ,放在全局打印的与globals一样,放在函数内则只打印函数内部的变量

    六、判断是某个实例属于哪个类

    st = 'abdc'
    #第二个参数可以是元组,例如判断st是字符串或字典或列表,
    #则可以写为:bol = isinstance(st,(str,dict,list)  
    bol = isinstance(st,str)  
    print(bol) #返回True,说明st是字符串类型
    def func1():
        a = 10
        def func2():
            nonlocal a   #不作为局部变量,向上层找
            a = 20
            print(a)
        func2()
        print(a)
    
    func1()    #打印结果:20 20
  • 相关阅读:
    Redis源代码分析(十三)--- redis-benchmark性能測试
    kvm中运行kvm
    umount.nfs device busy day virsh extend diskSpace, attachDisk
    ultravnc
    openNebula dubug
    maintenance ShellScripts
    virsh VMI deploy data serial xml
    cloud computing platform,virtual authentication encryption
    基于C 的libvirt 接口调用
    storage theory
  • 原文地址:https://www.cnblogs.com/sunshuhai/p/6298538.html
Copyright © 2011-2022 走看看