day11

函数名的第一类对象及使用

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

def func():
print(1)
print(func)
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(123)
func(foo)
---------------------
def func(f):
f()
def foo():
print('is foo')
func(foo)

4、函数名可以当作函数的返回值

def func():
def foo():
print(123)
return foo
a = func()
a()
-----------------------------
def f1():
def f2():
print(1)
def f3():
print(2)
return f2
ret = f2()
return ret
print(f1())

f格式化

python3.6版本以上才能使用

  • 填充字符串
s = f"你好{'常鑫'}"
s1 = F"你好{'常鑫'}"
  • 填充变量
s1 = f"你还是挺好的{s}"
print(s1)
  • 填充计算公式
s1 = f"{34+11}"
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(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,3,4,5,6]
s1 = f"{lst[0:5]}"
print(s1) # [1,3,4,5,6]
---------------------------
dic = {"key1":123,"key2":234}
s1 = f"{dic['key2']}"
print(s1)

%s,format,f都是格式化,都可实现效果。

迭代器

可迭代对象

list、dict,str,tuple,set——可迭代对象

方法一:

list.__iter__()
dict.__iter__()
str.__iter__()
set.__iter__()
tuple.__iter__()

方法二:

查看源码

方法三:

print(dir(list))

官方声明只要具有______iter__()方法的就是可迭代对象

  • 可迭代对象的优点:

​ 1、使用灵活

​ 2、直接查看值

  • 可迭代对向的缺点:

​ 消耗内存,不能迭代取值

list,tuple,str —— 索引

dict ——键

set——直接取值

迭代器

官方声明只要具有______iter______()方法和______next______()方法就是迭代器

f = open("xxxx",'w')
f.__iter__()
f.__iter__()
  • 优点:节省内存,惰性机制

  • 缺点:使用不灵活,操作比较繁琐,不能直接查看全部的值

  • 迭代器的特性:

    ​ 1、一次性的(用完就没有了)

    ​ 2、不能逆行(不能后退)

    ​ 3、惰性机制(节省内存):要一个给一个,不要就不给

  • 当容器中数据量较大的时候使用迭代器

lst = [1,2,3,4,55]
new_list = lst.__iter__() # 将可迭代对象转换成迭代器
-----------------------------
new_list.__iter__()
new_list.__next__()
----------------------
s = '123455'
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__())

for循环

s = "12343"               # 更改版for的本质
s = [1,2,3,4,5,7]
count = len(s)
new_s = s.__iter__()
while count:
print(new_s.__next__())
count -= 1
--------------------------------
s = "12345"
new_s = s.__iter__()
while True:
try:
print(new_s.__next__()) # for真实本质
except StopIteration:
break
----------------------------
万能报错
# except Exception:
print('我是万能的!')
break

递归

有效递归:

  • 不断调用自己本身(自己调用自己)
  • 有明确的终止条件

递:一直执行直到碰到结束条件

归:从结束条件开始往回退

官方声明:最大层次(1000)可以修改,实际测试(998或者997)

def func():
print(123)
func()
func() def age(n): # 1,2,3
if n == 3:
return "猜对了"
else:
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))

day11——函数名的使用、f格式化、迭代器、递归的更多相关文章

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

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

  2. 函数的第一类对象,f格式化,迭代器以及递归

    函数名的第一类对象及使用,f格式化以及迭代器 1.函数的第一类对象 第一类对象 --特殊点 1.可以当作值被赋值给变量 def func(): print(1) a = func a() 2.可以当作 ...

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

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

  4. Python迭代器(函数名的应用,新版格式化输出)

    1. 函数名的运用 ​ 你们说一下,按照你们的理解,函数名是什么? ​ 函数名的定义和变量的定义几乎一致,在变量的角度,函数名其实就是一个变量,具有变量的功能:可以赋值:但是作为函数名他也有特殊的功能 ...

  5. python基础学习Day11 函数名的应用、闭包、迭代器

    一.函数名的应用 1.函数名就是函数的内存地址 def func(): print(666) func() print(func) #函数的内存地址 2.函数名可以作为变量 def func1(): ...

  6. python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)

    一.函数名应用 函数名是什么?函数名是函数的名字,本质:变量,特殊的变量. 函数名(),执行此函数. python 规范写法 1. #后面加一个空格,再写内容,就没有波浪线了. 2.一行代码写完,下面 ...

  7. python基础之函数名的使用,闭包以及迭代器

    内容梗概: 1. 函数名的使⽤用以及第⼀一类对象 2. 闭包 3. 迭代器 1.函数名一. 函数名的运⽤.函数名是一个变量, 但它是⼀个特殊的变量, 与括号配合可以执行函数的变量.1.1 函数名的内存 ...

  8. python值函数名的使用以及闭包,迭代器

    一.函数名的运用 函数名就是一个变量名,但它是一个特殊的变量名,是一个后面加括号可以执行函数的变量名. def func(): print("我是一个小小的函数") a = fun ...

  9. 跟着太白老师学python day11 函数名的应用 globals(), locals()

    1.  函数名就是内存地址 def func(): ') print(func) >>>> <function func at 0x00000000003DC1E0> ...

随机推荐

  1. 4. 移动安全渗透测试-(Android逆向基础)

    4.1 smali 基础 1.注释 smali中使用#来代表注释一行例如:# const-string v0, "aaa" #这句不会被执行 2.数据类型 V void,只能用于返 ...

  2. flink 并行计数器实现

    1.flink实现计数器的灵感来源于Hadoop的MapReduce计算框架里的理念. flink通过实现Accumulator接口实现并行计数.并行管理是由flink实现的. public inte ...

  3. MySQL的过滤(极客时间学习笔记)

    数据过滤 SQL的数据过滤, 可以减少不必要的数据行, 从而可以达到提升查询效率的效果. 比较运算符 在SQL中, 使用WHERE子句对条件进行筛选, 筛选的时候比较运算符是很重要. 上面的比较运算符 ...

  4. ES项目实战

    前置 ES: Java Spark/Flink Stack + Spring Boot + ES Scala/Java + Java/Scala + Java ==> 用API的方式来掌握ES的 ...

  5. Debian x7中如何添加永久环境变量

    一.进入/etc/bash.bashrc(使用文本编辑器打开) 二.在最后面添加新的环境变量 export PATH=usr/...(路径):$PATH 三.保存后,打开终端,输入source ~/. ...

  6. 安装教程-VMware 12 虚拟机软件的安装

    VMware 12 虚拟机软件的安装 1.实验描述 安装虚拟化软件,在物理机中搭建各种不同操作系统,为学习提供各种平台. 2.实验环境 物理机系统:Windows 10 企业版 3.实验工具 [VMw ...

  7. dp的一些练习

    #include<iostream> #include<vector> using namespace std; class Backpack { public: int ma ...

  8. Zookeeper注册中心搭建-单机版(三)

    Zookeeper是一个分布式协调组件,本质是一个软件. Zookeeper常用的功能有: 发布订阅功能,把 zookeeper 当作注册中心的原因. 分布式/集群管理功能 Zookeeper是Jav ...

  9. Vue小练习(for循环,push方法,冒泡,if判断(以及与for循环的连用),按钮高亮,根据input框筛选数据)

    vue练习 ''' 1. 先有一下成绩单数据 scores = [ { name: 'Bob', math: 97, chinese: 89, english: 67 }, { name: 'Tom' ...

  10. webapi序列化控制

    我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为json,xml等),但是如果Controller的自动序列化后的结果不是我们想要的该 ...