python基础 Day11
python Day11
函数中默认参数的陷阱
只针对默认参数是可变的数据类型(如果你的默认参数指向的是可变的数据类型,那么你无论调用多少次默认参数,都是同一个)
def test(name,list=[]):
list.append(name)
return list
res=test("Zhxuiayu")
print(res)
res1=test("zhu")
print(res1)
##正确的结果:['Zhxuiayu']
## ['zhu']
##运行的结果:['Zhxuiayu']
## ['Zhxuiayu', 'zhu']
#解析:因为这里的lsit=[]变量即不再全局空间中也不在局部名称空间中
在函数中,如果你定义了一个变量,但是在定义这个变量之前对其进行引用了,那么解释器认为:语法问题,应该在使用前经常定义
count=1
def func():
print(count)
count=3
func()
##结果 UnboundLocalError: local variable 'count' referenced before assignment
全局变量global ,在局部变量前添加global,全局名称空间变量可以引用局部名称变量
def func():
global name
name="zhuxiayu"
func()
print(name)
nonlocal(不能操作全局变量,是内层函数对外层函数的局部变量进行修改)
def wapper():
count=1
def inner():
nonlocal count
count+=1
print(count)
inner()
wapper()
##结果:2
函数名的应用
函数名指向的是函数的内存地址
函数名+()就可以执行次函数
函数名就是变量
def fun():
print("1")
def fun1():
print("2")
fun1=fun
fun1()
##结果1
函数名可以作为容器类数据类型的元素
def fun():
print("1")
def fun1():
print("2")
def fun2():
print("3")
l1=[fun,fun1,fun2]
for i in l1:
i()
函数名可以作为函数的参数
def fun():
print("1")
def fun1(x):
x()
fun1(fun)
##结果 1
函数名可以作为函数的返回值
def fun():
print("1")
def fun1(x):
return x
rest=fun1(fun)
rest()
##结果 1
格式化输出
任意表达式
#结合字典格式
dict={"name":"zhxuaiyu","age":12}
print(f'我的名字是{dict["name"]},我的年龄是{dict["age"]}')
###结果:我的名字是zhxuaiyu,我的年龄是12
###结合函数的形式
def sum(a,b):
return a+b
print(f"最终的结果为:{sum(10,20)}")
优缺点
- 缺点是!,:{}这些标点符号不能出现在表达式的{}中
- 优点:
- 结构更加简单
- 可以结合表达式,函数进行使用
迭代
- 可迭代对象
- python中一切皆对象。一个实实在在存在的值,对象。
- 可迭代:更新迭代。重复的,循环的一个过程,每次都有新的内容,可以进行循环更新的一个实实在在的值。
- str list tuple dict set range 文件句柄
- 内部含有‘——iter——’方法的对象,可迭代对象。
- 可迭代对象的优点
- 存储的数据直接能显示,比较直观
- 拥有的方法比较多,操作方便。
- 可迭代对象的优点
- 占用内存
- 可迭代对象
迭代器(可更新迭代的工具)
迭代器的定义
内部含有‘——iter——‘方法并且含有’——next——‘方法的对象就是迭代器。
可以判断是否是迭代器:‘——iter——‘and’——next——‘在不在dir(对象中)
ss1="Fdsfsdffddfs"
obj=iter(ss1)
for i in range(len(ss1)):
print(obj.__next__())
优点
- 节省内存。
- 惰性机制,next一次,取一个值,绝不过多取值。因为是按需一次获取一次数据项,这样占的内存就很少。next一次,取一个值
缺点
- 时间慢
- 不走回头路
可迭代对象与迭代器的对比
可迭代对象是一个操作方法比较多,比较直观,存储数据相对少的一个数据集。
当你数据量过大,大到足以撑爆你的内存或者你以节省为首选因数时,将数据集设置为迭代器是一个不错的选择。
利用while去模拟for循环对可迭代对象进行取值的机制。
ss1="Fdsfsdffddfs"
obj=iter(ss1)
while 1:
try:
print(obj.__next__())
except StopIteration:
break
作业
看代码写结果
def func1():
print("in the func1")
def func2(x):
print("in func2")
return x
def func3(y):
print("in the func3")
return y
ret=func2(func1)
ret()
###结果:in func2
## in the func1
def func1():
print("in the func1")
def func2(x):
print("in func2")
return x
def func3(y):
print("in the func3")
return y
ret=func3(func2)
ret1=ret(func1)
ret1()
###结果:in the func3
### in func2
### in the func1def func():
for item in range(10):
pass
print(item)
func()
###结果:9
传入一个参数n,返回一个n的阶乘
#传入一个参数n返回一个n的阶乘
def func(number):
count=1
for i in range(number,0,-1):
count=count*i
return count
print(func(4))
写一个函数,返回一个扑克牌列表,里面有52项,每一项是一个元组,eg:[("草花",2),(“红心”:3)]
def pukepai(*args):
list=[]
for i in range(0,len(args),2):
tuple1=args[i:i+2]
list.append(tuple1)
return list
list=["红桃",2,"草花",3]
print(pukepai(*list))
写代码完成99乘法表
for m in range(1,10):
for n in range(1,10):
if m<=n:
print("%s*%s=%s"%(m,n,m*n),end=" ")
python基础 Day11的更多相关文章
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
- Python之路3【第一篇】Python基础
本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- 进击的Python【第二章】:Python基础(二)
Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...
- python基础之day1
Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
随机推荐
- Python后端日常操作之在Django中「强行」使用MVVM设计模式
扫盲 首先带大家了解一下什么是MVVM模式: 什么是MVVM?MVVM是Model-View-ViewModel的缩写. MVVM是MVC的增强版,实质上和MVC没有本质区别,只是代码的位置变动而已 ...
- 前端学习(六):body标签(四)
进击のpython ***** 前端学习--body标签 关于前面的都是大部分的标签内容 但是就像衣服一样,除了要有,还要放到适当的位置 我们先来看看一下网页的布局: 就可以看出来,网页都是一块一块的 ...
- Asp.net Core 3.1基于AspectCore实现AOP,实现事务、缓存拦截器
最近想给我的框架加一种功能,就是比如给一个方法加一个事务的特性Attribute,那这个方法就会启用事务处理.给一个方法加一个缓存特性,那这个方法就会进行缓存. 这个也是网上说的面向切面编程AOP. ...
- ken桑带你读源码 之 scrapy_redis
首先更大家说下 正式部署上线的爬虫会有分布式爬虫的需求 而且原本scrapy 的seen (判断重复url的池 不知道用啥词 已抓url吧 ) 保存在磁盘 url 队列 也是保存在磁盘 (保 ...
- Spring学习之Spring与Mybatis的两种整合方式
本机使用IDEA 2020.1.MySql 8.0.19,通过Maven进行构建 环境准备 导入maven依赖包 <dependencies> <dependency> < ...
- matplotlib绘制子图
fig,subs = plt.subplots(2,2) subs[0][0].plot(data_math_C1) subs[0][0].set_title('C_1 曲线') subs[0][1] ...
- PDO::errorCode
PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 mixed PDO: ...
- 5.5 省选模拟赛 B Permutation 构造 贪心
LINK:Permutation 对于这种构造神题 我自然是要补的.为啥就我没想出来哇. 30分还是很好写的 注意8!实际上很小 不需要爆搜 写bfs记录状态即可.至于判断状态是否出现与否 可以开ma ...
- electron 开发 - win7 运行后白屏 黑屏
解决思路: localhost:3000本地react项目确保运行无误 electron 官方demo跑一遍确认不是配置问题 切换electron版本,发现5可以6不行 google 官方issue ...
- 属性集 Properties
5.1 概述 java.util.Properties 继承于 Hashtable ,来表示一个持久的属性集.它使用键值结构存储数据,每个键及其对应值都是一个字符串.该类也被许多Java类使用,比如获 ...