day 14:深浅copy,数据结构 ,函数,set集合,变量作用域、返回值
本节内容:
1,深浅copy
2,数据结构
3,函数
4,变量作用域
5,返回值,return
一、深浅copy
首先理解当给变量赋值的时候,是给变量存在值所在的内存地址
a = 10000
b = 10000
a_id = id(a)
b_id = id(b)
print(a_id, b_id) # 当是数值,不是列表等变化的数据类型时,a=b的存储地址是相同
浅拷贝
import copy
husband = ["xiaohu", [13000, 5000]]
wife = husband.copy() # 浅拷贝,copy.copy(),shallow 浅的拷贝
wife[0] = "xiaolu"
husband[1][0] -= 3000
print("husband:", husband[1][0])
print("wife:", wife[1][0])
深拷贝
import copy
husband = ["xiaohu", [13000, 5000]]
xiaosan = copy.deepcopy(husband) # 深拷贝,deepcopy
xiaosan[1][0] -= 3000
husband[1][0] -= 1500
print("husband:", husband[1][0])
print("xiaosan:", xiaosan[1][0])
二、set集合,数据结构
a = [1, 2, 3, 4, 5]
a_set = set(a)
b = [4, 5, 6, 7, 8]
b_set = set(b) print(a_set.intersection(b_set)) # 交集, a_set和b_set的交集
print(a_set & b_set) # 4,5 print(a_set.union(b_set)) # 并集,a_set和b_set的并集
print(a_set | b_set) # 1,2,3,4,5,6,7,8 print(a_set.difference(b_set)) # 差集,a_set中剔除两者交集后的剩余元素
print(a_set - b_set) # 1,2,3 print(a_set.symmetric_difference(b_set)) # 对称差集,两个的交集反向=除了交集的所有不重复元素
print(a_set ^ b_set) # 1,2,3,6,7,8 a = [1, 2, 3, 4]
b = [1, 2]
a_set = set(a)
b_set = set(b) print(a_set.issuperset(b_set)) # 超集,a_set包含b_set
print(a_set > b_set) print(a_set.issubset(b_set)) # a_set被b_set包含
print(a_set < b_set)
三、函数
1)概念,函数叫方法,但是在英文是,subroutine或者是procedures,都是程序的意思
减少重复代码
方便修改,更易扩展
保持代码一致性(修改的时候不容易出现忘改的现象,修改一处都会修改)
2)创建,是def name():
a,函数名称不能以数字开头,是字母、数字、下划线的组合
b,函数名区分大小写
c,函数名不是能是保留字符
3)参数
1)必须参数,实参和形参必须顺序一一对应
2)关键字参数(在实参)
3)默认参数(在形参中)
4)多个参数,不定长,无命名参数*arg,命名参数**kwargs
import time
time_format = "%Y-%m-%d %H~%M~%S"
current_time = time.strftime(time_format) # 有参数,形参是n
def logger1(n):
current_time = time.strftime(time_format)
with open("%s log %s" % (current_time, n), "a", encoding="utf-8") as f:
f.write("end action %s \n" % n)
time.sleep(2)
logger1(1)
a、必须参数
def print_info(name, age):
info = '''
name: %s
age: %s''' % (name, age, sex)
print(info) print_info("吴振虎", 18) # 参数的顺序是一一对应的
b、关键字参数
def print_info(name, age):
info = '''
name: %s
age: %s''' % (name, age)
print(info) print_info(age=18, name="吴振虎") #实参名称要和形参的名称相同
b、默认参数
def print_info(name, age, sex="male"):
info = '''
name: %s
age: %s
sex: %s''' % (name, age, sex)
print(info) print_info("吴振虎", 18)
print_info("刘卫宏", 22, sex="female") # 当传关键字的时候会改变默认参数的值,不传的时候就是默认参数值,默认参数必须在必须参数的后边
d、不定长参数,
无命名参数,命名参数
# 必须的顺序,形参的顺序默认后是无命名参数,再是命名参数
# 实参的对应顺序,当多种参数的是时候,按照必须参数顺序对应
def have_name_parameter(sex="male", *args, **kwargs):
print("%s" % sex)
for i in args:
print(i)
for new_i in kwargs:
print("%s: %s" % (new_i, kwargs[new_i]))
return have_name_parameter(1, 2, 3, job="tester", height=180)
# 1会自动和默认参数对应,2,3,会成为元组进入args,有命名的实参会和**kwargs
四、变量的作用域
- L:local,局部作用域,即函数中定义的变量;
- E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
- G:globa,全局变量,就是模块级别定义的变量;
- B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。
注:
当想要实现内部变量也可以修改外部变量的时候可以通过global来实现,当是local变量的时候可以通过nonlocal来实现修改enclose范围的变量
# 变量的作用域
x = int(2.9) # int就是built-in类型变量
count = 10 # 这是global类型变量 def outer():
global count
count = 5 # enclose类型变量 def inner():
i_count = 3 # local嵌套的变量
print(i_count) inner() outer()
五、返回值
要想获取函数的执行结果,就可以用return语句把结果返回
注意:
- 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,可以理解为 return 语句代表着函数的结束
- 如果未在函数中指定return,那这个函数的返回值为None
- return多个对象,解释器会把这多个对象组装成一个元组作为一个一个整体结果输出。
day 14:深浅copy,数据结构 ,函数,set集合,变量作用域、返回值的更多相关文章
- C#多线程函数如何传参数和返回值
详见网站:http://WWW.MOVIH.COM就是一个多线程爬虫系统. C#多线程函数如何传参数和返回值 提起多线程,不得不提起 委托(delegates)这个概念. 我理解的委托 ...
- C#中的函数(二) 有参有返回值的函数
接上一篇 C#中的函数(-) 无参无返回值的函数 http://www.cnblogs.com/fzxiaoyi/p/8502613.html 这次研究下C#中的函数(二) 有参有返回值的函数 依然写 ...
- JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用
“JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是 ...
- Python函数变量和返回值
Python函数的全局变量和局部变量 1.不同的编程语言,程序可以分为函数和过程两大类,函数具有具体返回值,而过程则不具有具体的返回值,python只具有函数,因为对于它的一般函数,其返回值为所具体返 ...
- C++ //纯虚函数和抽象类 // 语法 virtual 返回值类型 函数名 (参数列表)=0 //当类中有了纯虚函数 这个类也称为抽象类
1 //纯虚函数和抽象类 2 // 语法 virtual 返回值类型 函数名 (参数列表)=0 3 //当类中有了纯虚函数 这个类也称为抽象类 4 5 6 #include <iostream& ...
- JS里面匿名函数的调用 & 变量作用域的实验
参考 http://www.educity.cn/wenda/54753.html 已实验验证结果正确. 1.下列哪些正确?(B.C) A.function(){ alert("Here!& ...
- python学习笔记10(函数一): 函数使用、调用、返回值
一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的.在Py ...
- javascript函数的声明,及返回值
<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>< ...
- python中的函数(定义、多个返回值、默认参数、参数组)
函数定义 在python中函数的定义以及调用如下代码所示: def test(x): y = x+1 return y result = test(2) print(result) 多个返回值的情况 ...
- 函数的调用 and 打印返回值 ret= mai() print(ret)
def mai(): # mai 函数名 (yan) 形式参数 print("老板,给我一包中华") return"给你" # 返回值-- 给你ret = ma ...
随机推荐
- [Torch]提示torch.inverse错误
来源:https://blog.csdn.net/zziahgf/article/details/72548128 当执行官方第二个例子时,提示xs = torch.inverse(A)*b错误 是因 ...
- python读取excel,返回dic列表
def get_xls_sheets_as_dic(pro_name, xls_name): dic_list = [] xls_path = os.path.join(BASE_PATH, &quo ...
- Python module ---- getopt
optlist, argv = getopt.getopt(argv, 'cdsarRvn:e:E:f:F:w:O:m:M:o:g:') 模块getopt用于分割了main函数的参数,参数args一般 ...
- [SF] Symfony 标准 HttpFoundation\Request 实现分析
使用方式 /** * 如果直接示例化 Request 默认是没有参数的,可以自己传入 * 本方法将 PHP 超全局变量作为参数然后实例化自身(Request)进行初始化. */ $request = ...
- linux 之用户管理
用户的家目录 普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700 超级用户:/root/,所有者和所属组都是root用户,权限是550 用户邮箱目录 /var/spool/mail ...
- python字符串 列表 元组 字典相关操作函数总结
1.字符串操作函数 find 在字符串中查找子串,找到首次出现的位置,返回下标,找不到返回-1 rfind 从右边查找 join 连接字符串数组 replace 用指定内容替换指定内容,可以指定次数 ...
- 关于创建String对象过程的内存分配
String是引用数据类型 但是String实际上java给我们提供的是一个类 注意:String 全类被fianl所修饰 所以 String 又叫 字符串常量 String 的值 一旦定义 不可以改 ...
- java课程之团队开发冲刺1.1
一.今日目标 1.完成课程助手的日期显示以及周数显示功能 2.将功能表改成侧面功能栏 3.将代码重新规范,尽量使得主函数简洁明了
- 深入理解C++11【4】
[深入理解C++11[4]] 1.基于范围的 for 循环 C++98 中需要告诉编译器循环体界面范围.如for,或stl 中的for_each: int main() { ] = { , , , , ...
- Go语言编程读书笔记:Go channel(1)
Channel是Go语言在语言级别提供的goroutine间的通信方式.我们可以用channel在两个或多个goroutine之间传递消息.channel是进程内的通信方式,因此通过channel传递 ...