函数名的第一类对象及使用,f格式化以及迭代器

1.函数的第一类对象

第一类对象 --特殊点

1.可以当作值被赋值给变量

def func():
print(1)
a = func
a() 2.可以当作元素存放在容器中 def func()
print(1)
lst = [func,func,func]
for i in lst
i() 3.函数名可以当作函数的参数 def func(f):
f()
def foo():
print(1)
func(foo) 4.函数名可以当作函数的返回值
def func():
def foo():
print(1)
return foo
a = func()
a() def f(1):
def f2():
print(1)
def f3():
print(2)
return f2
ret = f2()
return ret
print(f1())

2.f字符串格式化

# python3.6版本及以上才能够使用

s = f"你好('hello')"                 # 填充字符串
s1 = F"你好('hello')" s1 = f"你好{s}" # 填充变量
print(s1) s1 = f"{35+15}" #填充计算公式
print(s1) a = 10 #填充表达式
b = 20
s1 = f"(a if a>b else b)"
print(s1) s1 = f"{{{{{{'你好..'}}}}}}" #填充大括号
print(s1) s1 = f"{{}}"
print(s1) s1 = f"{'{}{}{}'}"
print(s1) s1 = f"{print(123)}"
print(s1) def prin(a):
print(a)
s1 = f"{prin(123)}"
prin(s1) def foo():
def func():
a = 1
return a
return func() s1 = f"{foo()}"
print(s1) lst = [1,2,3,4,5]
s1 = f"{lst[0:5]}"
print(s1) dic = {'key1':123,'key2':456}
s1 = f"{dic['key2']}"
print(s1)

3.迭代器

可迭代对象
list,dict,str,set,tuple --可迭代对象,使用灵活 验证是否为可迭代对象:
方式一:
list.__iter__()
dict.__iter__()
方式二:
查看源码
方式三:
print(dir(list)) 官方声明:只要具有__iter__()方法的就是可迭代对象 可迭代对象的优点:
1.使用灵活
2.直接查看值
可迭代对象的缺点:
1.消耗内存 取值方式:
list,tuple,str --索引
dict --键
set --直接取值 迭代器:
官方声明只要具有__iter__() 和 __next__()就是迭代器
f = open("t1.txt","r")
f.__iter__()
f.__next__() lst = [1,2,3,4,5]
new_lst = lst.__iter__() # 将可迭代对象转换成迭代器 new_lst.__iter__()
new_lst.__next__() s = "123456"
new_s = s.__iter__() #将可迭代对象转换成迭代器
print(new_s)
new_s.__iter__()
new.s.__next__() new_s = s.__iter__() #将可迭代对象转换成迭代器
print(new_s)
new_s.__iter__()
print(new_s.__next__())
print(new_s.__next__())
print(new_s.__next__()) s = "123456" #更改for的本质
s = [1,2,3,4,5,6]
count = len(s)
new_s = s.__iter__()
while count:
print(new_s.__next__())
count -= 1 s = "123456"
new_s = s.__iter__() # for的真实本质
while True:
try:
print(new_s.__next__())
except StopIteration:
break except Exception:
print("万能审查")
break 总结:
可迭代对象:
优点:使用灵活,可以直接查看值
缺点:占内存,不能迭代取值
迭代器:
优点:节省内存,惰性机制
缺点:使用不灵活,操作比较繁琐,不能直接查看元素 迭代器的特性:
1.一次性的(永远就没有了)
2.不能逆行(不能后退)
3.惰性机制(节省内存) 什么是可迭代对象:
具有很多私有方法,具有__iter__()方法的就是一个可迭代对象
什么是迭代器:
具有__iter__()和__next__()方法的就是迭代器 迭代器什么时候使用:当容器中数据量较多的时候使用迭代器

4.递归

递归:
1.自己调用自己(不断调用自己本身) --死递归
2.有明确的终止条件
#满足两个以上的才是有效递归
递:一直执行直到碰到结束条件
归:从结束条件开始往回退 def func():
print(123)
func()
func()
# 官方声明:最大层次1000,实际测试997/998 def age(n):
if n == 4:
return "你好"
else:
return age(n+1)
print(age(1)) ##过程
def age2(n):
if n == 3:
return "你好"
def age1(n):
if n == 3:
return "你好"
else:
age2(n+1)
def age(n):
if n == 3:
return "你好"
else:
age1(n+1)
age(1) 1.宝元 18-2-2-2
2.太白 18-2-2
3.wusir 18-2
4.alex 18 def age(n):
if n == 4:
return 18
else:
return age(n+1)-2
print(age(1)) ##过程
def age4(n):
if n == 4:
return 18
def age3(n):
if n == 4:
return 18
else:
return age4(n+1)-2
def age2(n):
if n == 4:
return 18
else:
return age3(n+1)-2
def age1(n):
if n == 4:
return 18
else:
return age2(n+1)-2
print(age1(1))

函数的第一类对象,f格式化,迭代器以及递归的更多相关文章

  1. Python函数03/函数名的第一类对象及使用/f 格式化/迭代器/递归

    Python函数03/函数名的第一类对象及使用/f 格式化/迭代器/递归 目录 Python函数03/函数名的第一类对象及使用/f 格式化/迭代器/递归 内容纲要 1.函数名的第一类对象及使用 2.f ...

  2. python函数之第一类对象

    目录 python函数之第一类对象 python函数之第一类对象 第一类对象(英语:First-class object)在计算机科学中指可以在执行期创造并作为参数传递给其他函数或存入一个变数的实体. ...

  3. 正确理解Python函数是第一类对象

    正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了.但函数 ...

  4. Javascript中的"函数是第一类对象(first-class object)"

    本身这句话很好解释,函数有两个主要特点,援引自 陈新 译的<JavaScript模式>: 1.函数是第一类对象: 函数可以在运行时动态创建,还可以在程序执行过程中创建. 函数可以分配变量, ...

  5. 学习11:内容# 1.函数名第一类对象及使用 ***** # 2.f格式化 *** # 3.迭代器 **** # 4.递归 ****

    目录 1.第一类对象 -- 特殊点 2.f.格式化 Python3.6版本以上才能够使用 3.迭代器 迭代 : 器 : 工具 4.递归 1.第一类对象 -- 特殊点 1.可以当做值被赋值给变量 def ...

  6. 13 Python之第一类对象闭包和迭代器

      def fn():     print("我叫fn") fn() print(fn)## <function fn at 0x0000000001D12E18> f ...

  7. python 第一类对象 闭包 迭代器

    ########################总结########################### 1. 函数名 -> 第一类对象 函数名就是变量名. 函数可以赋值 函数可以作为集合类的 ...

  8. python函数知识三 函数名的使用、格式化、递归

    12.函数名的使用 函数是第一类对象 函数名可以当做值被赋值给变量 def func(): print(1) return a = func print(func) print(a) a() 函数名可 ...

  9. Day04:函数参数、对象、嵌套、闭包函数和装饰器

    上节课复习:    1.什么是函数        函数就是具备某一功能的工具    2.为何用函数        1.程序的组织结构和可读性        2.减少代码冗余        3.扩展性强 ...

随机推荐

  1. sem_init重复调用引发sem_wait线程无法被唤醒

    问题 一段老代码,两个线程,一个线程调用sem_wait等待信号量,另外一个线程在某失败分支会调用sem_init清信号量,结果导致sem_wait线程无法被唤醒: 分析 Linux manpage ...

  2. zabbix—自动发现端口并监控

    自动批量检查agent开放的端口 PS:如果服务器上的应用都是固定的,不会随机产生的都可以使用自动发现端口来监控:  如果服务器会随机出现端口且每次启动程序都会改变,可以采用第二种方法,来监控指定的端 ...

  3. 第07组 Alpha冲刺(3/6)

    队名:摇光 队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:对后端功能进一步完善. 展示GitHub当日代码/文档签入记录:(组内共用,已询问过助 ...

  4. 第06组 团队Git现场编程实战

    一.组员职责分工 队员姓名 主要分工 朱庆章 测评福州最受欢迎的商圈(参考人气) 陈梦雪 测评福州最受欢迎的商圈(参考人气) 关文涛 分别测评福州人均消费50以下,50-100.100-200.200 ...

  5. text-align-last 实现文本居中对齐

    1.示例代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  6. rg.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:

    原先跑TEST CASE的时候没有出错 但是跑到整个程序里面,除了这个问题, 网上也找了下资料,说是用merge之类的可以解决,因为你这个update的obj和session里面的不用,所以导致此问题 ...

  7. openstack kvm cannot set up guest memory 'pc.ram': Cannot allocate memory

    Kvm:启动报错:error: internal error: process exited while connecting to monitor: 2018-11-12T01:47:14.9933 ...

  8. Activity: launchMode 和 Intent.FLAG_ACTIVITY_CLEAR_TOP

    Activity 的 launchMode: 1. standard: 标准模式 这种启动模式为标准模式,也是默认模式.每当我们启动一个Activity,系统就会相应的创建一个实例,不管这个实例是否已 ...

  9. layui的select下拉框太长被遮挡了的解决办法

    layui的select下拉框太长采用滚动条的形式出现,可以给select的dl加一个最大高度,具体的效果如下图 .layui-form-select dl { max-height:160px; }

  10. 完美解决Cannot download "https://github.com/sass/node-sass/releases/download/binding.nod的问题

    ①:例如很多人第一步就会这样做: 出现:Cannot download "https://github.com/sass/node-sass/releases/download/版本号/XX ...