Python学习笔记(七)
Python学习笔记(七):
- 深浅拷贝
- Set-集合
- 函数
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. 集合的两大作用:
- 去重
- 关系测试
# 定义语法
s = set{'alex',1,2}
2. 关系测试:
in ,not in
集合等价与不等价(==, !=)
子集(<)、超集(>)
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语句把结果返回
注意:
- 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
- 如果未在函数中指定return,那这个函数的返回值为None
- 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学习笔记(七)的更多相关文章
- Python学习笔记七-错误和异常
程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...
- Python学习笔记七
面向对象编程 面向对象的特性如下: 类:具有相同属性和方法的一类事物,成为类. 对象:类的实例化后的结果,一个类可以实例化多个对象,每个对象也可以不同的属性. 封装:在类中对数据的赋值,类里面包含着类 ...
- python学习笔记七 初识socket(进阶篇)
socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- python学习笔记七--数据操作符
一.Python表达式操作符及程序:
- python学习笔记(七)、异常
在实际开发中,往往不会出现一个系统编写下来,没有出现任何一个bug.为处理这种会出现错误的地方,如除数为零的除法,python提供了非常强大的机制————异常处理机制. 1 异常 python使用异常 ...
- python学习笔记七——字典
4.3 字典结构 字典是Python中重要的数据类型,字典的由“键-值”对组成的集合,字典中的“值”通过“键”来引用. 4.3.1 字典的创建 字典由一系列的“键-值”(key-value)对组成,“ ...
- Python学习笔记七:pip
安装pip: 到github上下载pip:https://github.com/pypa/pip 解压后,在解压出来的文件夹中打开命令行,输入 python setup.py install 安装完毕 ...
- python学习笔记(七) 类和pygame实现打飞机游戏
python中类声明如下: class Student(object): def __init__(self, name, score): self.name = name self.score = ...
- python学习笔记(七):面向对象编程、类
一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...
- python学习笔记(七)-函数
函数 方法 功能说白了,函数就是把一堆代码组合到一起,变成一个整体.函数不调用不会被执行.作用在于提高代码的复用性.定义函数 def greet_user(): """关 ...
随机推荐
- 201521123008《Java程序设计》第六周实验总结
1.本周学习总结 2.书面作业 1.clone方法 1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 因为被protected修饰 ...
- Java中如何引入结对编程
引自微信: 很多同学说: 我程序写得好,ACM比赛能得分, 就好了,软件工程讲的那些有用么? 有些学校的 <软件工程>课,由于要求太简单,反而不能说明软件工程的价值. 其实好办, 让学生结 ...
- Java 第九周总结
1. 本周学习总结 2. 书面作业 1.常用异常 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 以前的代码经常出现空指针的,需 ...
- Apache Spark 2.2.0 中文文档 - Spark 编程指南 | ApacheCN
Spark 编程指南 概述 Spark 依赖 初始化 Spark 使用 Shell 弹性分布式数据集 (RDDs) 并行集合 外部 Datasets(数据集) RDD 操作 基础 传递 Functio ...
- Spring-mvc配置“/”路径过滤问题
首先大家都知道"/*"可以匹配所有url,包括带扩展名的,一般只用在过滤器上. 一般Spring-mvc的核心 <servlet> <servlet-name&g ...
- STS安装
在eclipse中安装spring tool Suite插件需要根据eclipse版本找到对应的spring tool Suite安装包. spring tool Suite 官网地址:http:// ...
- Matlab入门学习(程序设计)
一.循环(for,while) for循环: for i=begin:step:end ...... end while循环: while condition ...... end 二.分枝(if,i ...
- 深入理解计算机系统chapter3
栈在处理过程调用中起到至关重要的作用,栈向下增长,栈顶元素的地址是所有栈中元素最小的.栈指针%esp保存着栈顶元素的地址 控制: 重点: 基于条件数据传送的代码比基于条件控制转移(预测错误惩罚比较高) ...
- ASP.NET Core 认证与授权[2]:Cookie认证
由于HTTP协议是无状态的,但对于认证来说,必然要通过一种机制来保存用户状态,而最常用,也最简单的就是Cookie了,它由浏览器自动保存并在发送请求时自动附加到请求头中.尽管在现代Web应用中,Coo ...
- JS -- Variables As Properties
Variables As Properties When you declare a global JavaScript variable, what you are actually doing i ...