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 ...
随机推荐
- Python- - -练习目录
练习题 1,简述变量命名规范 1.必须是字母,数字,下划线的任意组合: 2.不能是数字开头: 3.不能是python中的关键字: 4.变量不能是中文: 5.变量不能过长: 6.变量要具有可描述性: 2 ...
- MYSQL Statement violates GTID consistency: CREATE TABLE ... SELECT. 错误代码: 1786 问题
1.在MYSQL中,执行建表语句时CREATE TABLE aaaa AS SELECT * FROM menu; 报: 错误代码: 1786Statement violates GTID co ...
- node基础知识-常用node命令
node中js的组成部分:ECMAScript核心+全局成员+模块系统成员 浏览器中的js组成部分:ECMAScripts核心+BOM+DOM 常用node命令 cmd中进入REPL环境:直接输入no ...
- less和sass的定义和区别
less是单独的一种文件,可以理解为css的升级版: sass是一个相对新的编程语言,为web前端开发而生,可以用它来定义一套新的语法规则和函数: 区别: ① 表现方式不同:less基于javas ...
- 【HTML入门基础知识】从零开始,我要加油!---致HTML
前言: 今天来和大家分享一下近期自己整理的HTML笔记,希望会对你的学习有所帮助! ***本章关键词:HTML头部格式:常见的块级标签:常见的行级标签:表格:表单. 一.HTML头部格式 一.HTML ...
- 黏包-黏包的成因、解决方式及struct模块初识、文件的上传和下载
黏包: 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包. 只有TCP协议中才会产生黏包,UDP协议中不会有黏包(udp协议中数 ...
- Sql Server索引重建
公司线上数据有几千万数据,有时候索引碎片会导致索引达不到我们的预期查询效率,这个时候将索引重建将会提升一定效率,不过重建的时候一定得晚上用户少的时候,索引重建需要一定时间. 直接贴自动重建索引脚本吧 ...
- Add和AddRange的使用
Add 是每次将单个元素添加到集合里面 AddRange可以一次性添加多个元素到集合里面 AddRange例子: public static int ExecuteCommand(st ...
- 6.移动端App安装包的测试用例
安装 安装手册是否规范,是否简洁,是否通俗易懂. 安装手册是否齐全,正确,有改动时,文档是否同步更新 直接复制安装程序到电脑上,能否正常安装 按安装手册给出的步骤进行安装,安装是否正确 查看在安装过程 ...
- HttpConnection详解【转】
HttpConnection详解[转] HttpURLConnection对象 1.从Internet获取网页,发送请求,将网页以流的形式读回来. 步骤:1)创建一个URL对象:URL url ...