1 2 3 4

【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
posted @ 2017-01-18 23:42  I我的博客I  阅读(305)  评论(0编辑  收藏  举报