python之路——10
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594
复习
a.函数可读性强,复用性强
def 函数名()
函数体
return 返回值
函数先定义后执行,
b.返回值
1.没有返回值
2.返回一个值
3.返回多个值:多个值用逗号隔开;可用一个或多个等量变量接受
c.参数
1.形参:定义函数
位置参数:必须传
*args 动态参数,接受任意多个,按位置传入的参数
默认参数:可不传
**kwargs 动态参数,可接受任意多,按关键字传入的参数
2.实参:调用函数
按照位置传参数
按照关键字传参数 :可以混用,顺序:位置+关键字
3.默认参数陷阱
如果默认参数的值是一个可变数据类型,那么每次调用函数,如果不传值,就公用一个数据类型资源
学习内容
1.命名空间
内置命名空间
python解释器一启动就可以使用的名字就存储在内置命名空间
内置的名字在启动解释器的时候就加载进内存
全局命名空间
程序从上之下被执行的过程中依次加载进内存
放置了我们设置的所有变量名和函数名
局部命名空间
函数内部定义的名字
调用函数时,才会产生这个名称空间,函数执行结束,则命名空间消失
规则:
1.局部:可以使用全局和内置
全局:使用内置,不能使用局部
内置:不能使用全局和局部
2.全局定义与内置名字冲突时,会使用全局的名字
如果有,就不找上级;如果自己没有,就找上级;上级没有,找上上级
多个函数,拥有多个独立的局部名字空间,不共享
2.作用域
全局作用域 globals
作用于全局,内置和全局名字空间的名字都属于全局作用域
局部作用域 locals
作用于局部,函数(局部命名空间)
#对于不可变数据类型,局部可查看不可修改; 若要修改, 函数内global声明
3.函数的嵌套定义与调用
nonlocal
4.函数的本质
1.函数名是内存地址
2.函数名可以赋值
3.函数名可以作为容器类型的元素
4.函数名可以作为函数的参数,返回值
5.闭包
代码区
函数嵌套与调用
def outer():
a = 2 def inner():
b = 3 def inner2():
nonlocal a
a += 1
print('inner2', a)
inner2()
print('inner', a)
inner()
print(a) outer()
print(a)
闭包
def outer():
a = 1 def inner():
print(a)
print(inner.__closure__)
return inner inn = outer()
'''
'''
def wrapper():
money = 1000
def func():
name = 'eva'
print(func.__closure__)
def inner():
print(name,money)
print(inner.__closure__)
return inner
return func f = wrapper()
i = f()
i()
print(wrapper.__closure__)
作业
#2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
# def func(l):
# return l[1::2]
# print(func([1,2,3,4,5,6,7,8,9])) # 3、写函数,判断用户传入的值(字符串、列表、元组)长度是否大于5。
# def func(l):
# if len(l) > 5:
# return '大于5啦'
# else:
# return '没有大于5啦'
# print(func('sd')) # 4、写函数,检查传入列表的长度,如果大于2,
# 那么仅保留前两个长度的内容,并将新内容返回给调用者。
# def func(l):
# if len(l) > 2:
# return l[0:2]
# print(func([1,1,1,1])) # 5、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数,并返回结果。
# def func(l):
# dic = {'digit': 0, 'letter': 0, 'space': 0, 'other': 0, }
# for i in l:
# if i.isdigit():
# dic['digit'] += 1
# elif i.isalpha():
# dic['letter'] += 1
# elif i == ' ':
# dic['space'] +=1
# else:
# dic['other'] +=1
# return dic
# print(func('a')) # 6、写函数,检查用户传入的对象(字符串、列表、元组)
# 的每一个元素是否含有空内容,并返回结果。
# def func(l):
# for i in l:
# if i == ' ':
# return '存在空内容'
# print(func('')) #7、写函数,检查传入字典的每一个value的长度,如果大于2,
# 那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
for i in dic:
print(i)
# PS:字典中的value只能是字符串或列表 # def func(l):
# a = []
# for i in l.keys():
# a.append(i)
# for j in a:
# l[j] = l[j][:2]
# return l
# print(func({"k1": "v1v1", "k2": [11,22,33,44]}))
#################################################
# def func(dic):
# for k in dic:
# if len(dic[k]) > 2:
# dic[k] = dic[k][:2]
# return dic
# dic = {"k1": "v1v1", "k2": [11,22,33,44]}
# print(func(dic)) # 8、写函数,接收两个数字参数,返回比较大的那个数字。
# def func(a,b):
# if a > b:
# return a
# elif a < b:
# return b
# else:
# return '相等'
# print(func(2,2)) # 三元运算
# 变量 = 条件返回True的结果 if 条件 else 条件返回False的结果
#必须要有结果
#必须要有if和else
#只能是简单的情况
# a = 1
# b = 5
# c = a if a>b else b #三元运算
# print(c) # 9、写函数,用户传入修改的文件名,与要修改的内容,
# 执行函数,完成整个文件的批量修改操作(进阶)。
# def func(filename, old, new):
# with open(filename, encoding='utf-8') as f, open('%s.bak'%filename,'w',encoding='utf-8') as f1:
# for line in f:
# if old in line:
# line = line.replace(old,new)
# f1.write(line)
# import os
# os.remove(filename)
# os.rename('%s.bak'%filename, filename)
# func('lod', '大家', '你') # 2、写函数,接收n个数字,求这些参数数字的和。
# def func(*l):
# sum = 0
# for i in l:
# sum = sum + i
# return sum
# print(func(1,2,3,1,3))
# 3、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
# a=10
# b=20
# def test5(a,b):
# print(a,b)
# c = test5(b,a)
# # print(c) # 4、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
# a=10
# b=20
# def test5(a,b):
# a=3
# b=5
# print(a,b)
# c = test5(b,a)
# print(c)
python之路——10的更多相关文章
- 【python之路10】python实例练习
#!usr/bin/env python # -*- coding:utf-8 -*- # 一.元素分类 # # 有如下值集合 [11,22,33,44,55,66,77,88,99,90...], ...
- 小白的python之路10/30磁盘分区
总结:fdisk mkfs mount 1.磁盘分区 硬盘分区有三种,主磁盘分区.扩展磁盘分区.逻辑分区. 一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个.且主分区+扩展分区总共 ...
- 小白的python之路10/30 vim编辑器
1.vim进入命令行之后的编辑过程
- 小白的python之路10/29 文件归档
一打包解包文件 [root@localhost ~]# cd /test/[root@localhost test]# touch a.txt b.txt c.txt[root@localhost t ...
- 小白的python之路10/22 day1
一.操作系统 操作系统就是一个协调.管理和控制计算机硬件资源和软件资源的控制程序.操作系统所处的位置如下图
- python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套
二十八.函数进阶 1. "*" 和 "**" ① 在形参位置时 都是聚合的作用 *args 位置参数→元组 **kwargs 关键字参数→ ...
- 小白的python之路10/31&11/1文件操作系统
文件操作系统的介绍 ext4的superblock块是超级快,innode 块是专门存放文件信息的, block count将硬盘做成block块,对操作系统而言写在block块上就可了,eg:文件1 ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...
- python之路 目录
目录 python python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while python 基础2 编码转换 pych ...
随机推荐
- MySQL自增序列-亲试ok
#1.创建sequence表,公共的 DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( name VARCHAR(30) NOT ...
- Android设备终端监控可能用到的工具
先记录工具,以后详细分析 add-property-tagcheck-lost+foundcpueatercpustatsdaemonizedexdumpdirectiotestfiokexecloa ...
- Win10系列:C#应用控件基础17
Popup控件 在应用程序中使用Popup控件时,通常会先将其设置为隐藏状态,当用户触发应用中已定义的事件时,Popup控件将以弹出窗口的方式显示相关信息来提示用户操作. 在XAML文件中,Popup ...
- Eclipse中Server视图加载项目之后项目名后边有带括号的名字
用习惯了eclipse工具,因为某种原因需要修改项目名称.结果选择项目,按“F2”成功修改后,使用tomcat进行web发布时,选择“Add and Remove”,发现名字还是以前那个项目名称.即使 ...
- VSTO:使用C#开发Excel、Word【15】
使用文档属性DocumentProperties集合和DocumentProperty对象位于Microsoft Office 11.0 Object Library(office.dll)中,该对象 ...
- python中如何删除列表中的所有元素
今天写代码的时候遇到一个小问题,Python中要删除列表中的所有元素.Python本身就提供了pop.remove.del这些删除的函数.我想着用循环实现,结果很麻烦.几番周折上了stackoverf ...
- js计算两个日期相差天数
//两个时间相差天数 兼容firefox chrome var days = function(startDate) { var sdate = new Date(startDate.replace( ...
- virsh命令和虚拟机克隆
virsh 命令 virsh list //列出正在运行虚拟机 virsh list --all //列出所有虚拟机 virsh console sunhao-1 //进入名字为sunh ...
- lvs负载均衡(DR模式)
lvs负载均衡(DR模式) 系统环境:lvs+keepalivedcentos7.5 ip:192.168.1.157 vip:192.168.1.150(主)centos7.5 ip:192.168 ...
- oc语言的Foundation框架(学习笔记1)
Foundation框架 1.Foundation框架介绍 框架是由许多类.方法.函数以及文档按照一定的规则组合的起来的集合. cocoa程序编写主要用到2个框架Foundation和Applicat ...