zoukankan      html  css  js  c++  java
  • Python学习笔记(七)

    Python学习笔记(七):

    1. 深浅拷贝
    2. Set-集合
    3. 函数

    1. 深浅拷贝

    1. 浅拷贝-多层嵌套只拷贝第一层

    a = [[1,2],3,4]
    b = a.copy()
    print(b)		# 结果:[1,2],3,4
    b[0][0] = 8
    print(a)		# 结果:[8,2],3,4
    print(b)		# 结果:[8,2],3,4
    

    原理图:
    原理图
    原理图

    2. 深拷贝-克隆一份

    2. Set-集合

    1. 集合的两大作用:

    1. 去重
    2. 关系测试
    # 定义语法
    s = set{'alex',1,2}
    

    2. 关系测试:

    1. in ,not in

    2. 集合等价与不等价(==, !=)

    3. 子集(<)、超集(>)

    s=set('alvinyuan')
    s1=set('alvin')
    print('v' in s)
    print(s1<s)
    

    4 联合(|)
    联合(union)操作与集合的or操作其实等价的,联合符号有个等价的方法,union()。

    s1=set('alvin')
    s2=set('yuan')
    s3=s1|s2
    print(s3)  				#{'a', 'l', 'i', 'n', 'y', 'v', 'u'}
    print(s1.union(s2)) 	#{'a', 'l', 'i', 'n', 'y', 'v', 'u'} 
    

    5、交集(&)
    与集合and等价,交集符号的等价方法是intersection()

    s1=set('alvin')
    s2=set('yuan')
    s3=s1&s2
    print(s3)					 		#{'n', 'a'}
    print(s1.intersection(s2))			#{'n', 'a'}
    

    6、差集(-)
    等价方法是difference()

    s1=set('alvin')
    s2=set('yuan')
    s3=s1-s2
    print(s3)  #{'v', 'i', 'l'}
    print(s1.difference(s2)) #{'v', 'i', 'l'}
    

    7、对称差集(^)
    对称差分是集合的XOR(‘异或’),取得的元素属于s1,s2但不同时属于s1和s2.其等价方法

    symmetric_difference()
    s1=set('alvin')
    s2=set('yuan')
    s3=s1^s2
    print(s3)  #{'l', 'v', 'y', 'u', 'i'}
    print(s1.symmetric_difference(s2)) #{'l', 'v', 'y', 'u', 'i'}
    

    3. 函数

    1. 命名方式与变量相同

    # 定义语法
    def function():
    	print("This is a def!")
    

    2. 不定长参数

    # 传入无命名参数
    def add(*args):
    	print(args)
    	sum = 0
    	for i in args:
    		sum += i
    	print(sum)
    	
    add(1,2,3,4,5,6)
    
    # 传入命名参数
    def print_info(**kwargs):
    	for i in kwargs:
    		print('%s : %s' %(i,kwargs[i]))
    
    print_info(name='han',age='22',job='student')
    
    # 同时传入命名和无命名参数
    def print_info(*args,**kwargs):
    	…………
    	…………
    	
    print(1,2,3,name='han')
    # 无命名参数必须在命名参数左边(前面)
    

    3. 函数的返回值

    要想获取函数的执行结果,就可以用return语句把结果返回

    注意:

    1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
    2. 如果未在函数中指定return,那这个函数的返回值为None
    3. return多个对象,解释器会把这多个对象组装成一个元组作为一个一个整体结果输出。

    4. 函数的作用域

    python中的作用域分4种情况:
    L:local,局部作用域,即函数中定义的变量;
    E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
    G:globa,全局变量,就是模块级别定义的变量;
    B:built-in,系统固定模块里面的变量,比如int, bytearray等。

    • 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。
    • 当然,local和enclosing是相对的,enclosing变量相对上层来说也是local。

    代码示例:

    x = int(2.9)		# int built-in
     
    g_count = 0  		# global
    def outer():
        o_count = 1		# enclosing
        def inner():
            i_count = 2	# local
            print(o_count)
        # print(i_count) 找不到
        inner() 
    outer()
    
    # print(o_count) #找不到
    
  • 相关阅读:
    判断php变量是否定义,是否为空
    HTTP Client 编写
    推荐《冒号课堂——编程范式与OOP思想》
    一些免费的HTML编辑器
    如何判断mysql中数据表中两个列之间的相同记录和不同记录
    PostgreSQL 8.4, SQL Server 2008, MySQL 5.1比较
    JDBC纵览
    使用jdbc连接sql数据库
    关于PHP中变量的判定
    如何判断数据库中是否存在一个数据表
  • 原文地址:https://www.cnblogs.com/ryomahan/p/7549872.html
Copyright © 2011-2022 走看看