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) #找不到

Python学习笔记(七)的更多相关文章

  1. Python学习笔记七-错误和异常

    程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...

  2. Python学习笔记七

    面向对象编程 面向对象的特性如下: 类:具有相同属性和方法的一类事物,成为类. 对象:类的实例化后的结果,一个类可以实例化多个对象,每个对象也可以不同的属性. 封装:在类中对数据的赋值,类里面包含着类 ...

  3. python学习笔记七 初识socket(进阶篇)

    socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  4. python学习笔记七--数据操作符

    一.Python表达式操作符及程序:

  5. python学习笔记(七)、异常

    在实际开发中,往往不会出现一个系统编写下来,没有出现任何一个bug.为处理这种会出现错误的地方,如除数为零的除法,python提供了非常强大的机制————异常处理机制. 1 异常 python使用异常 ...

  6. python学习笔记七——字典

    4.3 字典结构 字典是Python中重要的数据类型,字典的由“键-值”对组成的集合,字典中的“值”通过“键”来引用. 4.3.1 字典的创建 字典由一系列的“键-值”(key-value)对组成,“ ...

  7. Python学习笔记七:pip

    安装pip: 到github上下载pip:https://github.com/pypa/pip 解压后,在解压出来的文件夹中打开命令行,输入 python setup.py install 安装完毕 ...

  8. python学习笔记(七) 类和pygame实现打飞机游戏

    python中类声明如下: class Student(object): def __init__(self, name, score): self.name = name self.score = ...

  9. python学习笔记(七):面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

  10. webdriver(python)学习笔记七——多层框架定位与智能等待

    多层框架或窗口定位: switch_to_frame() switch_to_window() 智能等待: implicitly_wait() 现在web应用中经常会遇到框架如(frame)或窗口(w ...

随机推荐

  1. CLR via C# 读书笔记---常量、字段、方法和参数

    常量 常量是值从不变化的符号.定义常量符号时,它的值必须能在编译时确定.确定后,编译器将唱两只保存在程序集元数据中.使用const关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分 ...

  2. Java2_java入门时的一些基本概念的理解(j2ee,j2se,j2me,jdk,sdk,jre,jvm,跨平台)

    什么是SDK呢? Software Develop Kit的简称,顾名思义就是软件开发包.软件开发商实现底层模块,并对其进行类库封装,配置成高级别的开发环境,为程序员上层的程序开发提供支持.譬如Goo ...

  3. 再议使用Python批量裁切栅格

    曾经写过<使用Python脚本批量裁切栅格>,但今天又遇到这个情况则发现了问题.我们遇到的实际问题往往是有一个需要裁剪的影像(大块的),另外有一个矢量面,现在需要按矢量面每一个要素进行裁剪 ...

  4. BZOJ1444 : [Jsoi2009]有趣的游戏

    建立AC自动机,并求出转移矩阵. 再用$\sum E(终止节点)=1$去替换第一个方程,高斯消元即可. 时间复杂度$O(n^3l^3)$. 注意精度问题,要特判0.00的情况. #include< ...

  5. Android属性动画完全解析(上)

    Android属性动画完全解析(上) 转载:http://blog.csdn.net/guolin_blog/article/details/43536355 在手机上去实现一些动画效果算是件比较炫酷 ...

  6. 【Web学习日记】——在IIS上发布一个WebService

    没有开发过程,只是发布过程 一.前提 开发使用的是VS2013 从来没有做过Web的发布,在网上找例子,看到的总是与自己的情况不相符,而且也有人提出了VS2013发布网站的问题,但解决方案却很少,好不 ...

  7. 【剑指offer 面试题14】调整数组顺序使奇数位于偶数前面

    思路: 头尾指针,向中间遍历,依据条件交换元素. #include <iostream> using namespace std; void reOrder(int *pData, uns ...

  8. 系统分层 manager层意义

    manager用于控制事务,通常是这么说的,但是如果把事务空指针service可以的,但是有些时候,service加了Transaction注解之后,在加别的注解,可能导致Transaction失效. ...

  9. dubbo 请求调用过程分析

    服务消费方发起请求 当服务的消费方引用了某远程服务,服务的应用方在spring的配置实例如下: <dubbo:referenceid="demoService"interfa ...

  10. 安装snap及snap常安装软件

    文章链接:https://blog.csdn.net/laomd/article/details/80710451 一.snap简介 什么是snap,snap是一种全新的软件包管理方式,它类似一个容器 ...