一、函数名的应用

​函数名的定义和变量的定义几乎一致,在变量的角度,函数名其实就是一个变量,具有变量的功能:可以赋值;但是作为函数名他也有特殊的功能就是加上()就会执行对应的函数,所以我们可以把函数名当做一个特殊的变量

1、函数名指向的是函数的内存地址

​函数名 + ()就可以执行次函数

def func(): ​

print("呵呵")

​print(func)

输出结果:

​ 通过上面代码可以我们知道,函数名指向的是这个函数的内存地址,其实深一步理解可得知,与其说函数名()可以执行这个函数,不如说是函数的内存地址()才是执行这个函数的关键,就好比:

a = 1

b = 2

c = a + b

print(c) # 3

2、函数名可以赋值给其他变量

def func():

print("呵呵")

print(func)

a = func # 把函数当成一个变量赋值给另一个变量​

a() # 函数调用 func()

3、函数名可以当容器类元素

def func1():

print("in func1: 嘻嘻")

def func2():

print("in func2: 哈哈")

def func3():

print("in func3: 咯咯")

def func4():

print("in func4: 吱吱")

lst = [func1, func2, func3, func4]

for i in lst:

i()

4、函数名可以当做函数的参数

def func1():

print("in func1")

def func2(f):

print("in func2")

f()

func2(func1)

输出结果:

in func2

in func1

5、函数名可以作为函数的返回值

def func1():

print("in func1")

def func2(f):

print("in func2")

return f

ret = func2(func1)

ret()

输出结果:

in func2

in func1

二、Python新特性:f-strings格式化输出

1、旧的格式化输出方式

name = "mrxiong"

age = 19

msg = "我叫%s,今年%s"%(name,age)

msg1 = "我叫{},今年{}".format(name,age)

print(msg)

print(msg1)

2、新特性:格式化输出 python3.6版本后适用

name = "mrxiong"

age = 19

msg = f"我叫{name},今年{age}"

print(msg)

可以加表达式

dic={"name":"mrxiong","age":19}

msg = f"我叫{dic["name"]},今年{dic["age"]}"

print(msg)

count= 7

a = f"最终结果:{count*7}"

print(a)

name= "mrxiong"

msg1= f"我的名字是 :{name.upper()}"

print(msg1)

结合函数 使用

def _sum(a,b):

return a+b

msg2 = f"最终的计算结果是:{_sum(10,20)}"

print(msg2)

def _sum(a,b):

return a+b

num=int(input("请输入弟一个数字:"))

num1=int(input("请输入第二个数字:"))

msg2 = f"最终的计算结果是:{_sum(num,num1)}"

print(msg2)

优点:1、结构更清晰更简化,2、可以结合表达式及函数进行使用,3、效率提升很多

三、迭代器

1、可迭代对象

​字面意思:对像,python中一切皆对象,一个实实在在存在的值,对象

​可迭代:更新迭代。 重复的,循环的一个过程。可进行循环更新的一个实实在在值

​专业角度:可迭代对像,内部含有’____iter‘_方法的对像,可迭代对像

​目前学过的可迭代对象:str list tuple dict set range 文件句柄

​判断一个对像的所有方法:dir()

s1 = "mrxiong"

print(dir(s1))

s1 = "mrxiong"

print("__iter__"in dir(s1))

小结

字面意思:可以进行循环更新的一个实实在在值

专业角度:可迭代对像,内部含有’____iter‘_方法的对像,可迭代对象

判断一个对像是不是可迭代对像:’____iter‘ in dir(对像)

str list tuple dict set range 文件句柄

优点:

存储的数据直接能显示,比较直观

拥有的方法比较多

缺点:

占用内存

不能直接通过for循环,不能直接取值(索引,key)

2、迭代器

迭代器的定义:

字面意思:更新迭代,器:工具,可更新迭代的工具

专业角度:内部含有"_____iter" 方法并且含有 "_____next" 方法的对象就是迭代器

可以判断是否是迭代器:"inter"and "_____next" 在不在dir(对象)

判断一个对象是否是迭代器

with open("a.txt", encoding="utf-8", mode="w") as f1:

print("__iter__" in dir(f1) and "__next__" in dir(f1))

可迭代对象如何转化成迭代器并取值

s1 = "adf"

obj = iter(s1) #把s1转换为一个迭代器

obj.__iter__() #把s1转换为一个迭代器第二种方法

print(next(obj)) #next对己转换的迭代器进行取值

print(obj.__next__()) #next对己转换的迭代器进行取值第二种方法

print(next(obj))

l1 = [11,22,33,44,55,66]

l2 = iter(l1)

print(next(l2))

print(next(l2))

print(next(l2))

print(next(l2))

print(next(l2))

print(next(l2))

l3 = iter([1,2,3,4])

print(next(l3))

print(next(l3))

print(next(l3))

print(next(l3))

可迭代对象转换成迭代器

iter([1,2,3])

利用while循环模拟for循环对可迭代对象进行取值的机制

s1 = [11, 22, 33, 44, 55, 66, 77, 88]

obj = iter(s1)

while 1:

try:

print(next(obj))

except StopIteration:

break

小结

迭代器优点:

1)节省内存。迭代器在内存中相当于只占一个数据的空间:因为每次取值都上一条数据会在内存释放,加载当前的此条数据。

2) 惰性机制。next一次,取一个值,绝不过多取值。

有一个迭代器模式可以很好的解释上面这两条:迭代是数据处理的基石。扫描内存中放不下的数据集时,我们要找到一种惰性获取数据项的方式,即按需一次获取一个数据项。这就是迭代器模式。

迭代器的缺点:

​ 不能直观的查看里面的数据。

​ 取值时不走回头路,只能一直向下取值。

​速度慢

可迭代对象与迭代器的对比

可迭代对象:

​ 是一个私有的方法比较多,操作灵活(比如列表,字典的增删改查,字符串的常用操作方法等),比较直观,但是占用内存,而且不能直接通过循环迭代取值的这么一个数据集。

​应用:当你侧重于对于数据可以灵活处理,并且内存空间足够,将数据集设置为可迭代对象是明确的选择。

迭代器:

​ 是一个非常节省内存,可以记录取值位置,可以直接通过循环+next方法取值,但是不直观,操作方法比较单一的数据集。

**应用**:当你的数据量过大,大到足以撑爆你的内存或者你以节省内存为首选因素时,将数据集设置为迭代器是一个不错的选择。(可参考为什么python把文件句柄设置成迭代器)。

python return返回值格式化_day11__函数名的应用,python新特f-strings格式化输出、迭代器...相关推荐

  1. python return返回值

    # return 返回值作用: # 1.函数中包含return 语句,结束函数执行并返回值 # 2.函数体中不包含return语句,返回None值 # 3.返回多个值,可使用列表,元组,字典,集合 d ...

  2. python return返回值_Python return语句 函数返回值

    return语句是从python 函数返回一个值,在讲到定义函数的时候有讲过,每个函数都要有一个返回值.Python中的return语句有什么作用,今天就来仔细的讲解一下. python 函数返回值 ...

  3. Python ------ return返回值等

    杂 return 全局变量和局部变量 函数名的使用 函数的嵌套 nonlocal return # ### return 返回值 """ 自定义函数的返回值,return ...

  4. python return返回值在计算机内的存储形式_Python如何执行存储过程,获取存储过程返回值...

    在Pathon中如何执行存储过程呢?可以使用如下方法: 存储过程定义基本如下: ALTER procedure [dbo]. [mysp] @Station varchar ( 50), @SN va ...

  5. shell调用python获取返回值_[linux的shell脚本调用python脚本的返回值][shell调python][ubuntu的shell调用python脚本得到返回值]...

    最近搞个东西,需要写shell脚本,但在shell脚本里需要调用python并得到变量值,网上找了很多都是python调shell的,最后请教了一下郭总 知道了sys.argv的用法后才搞定了,在此感 ...

  6. return两个返回值_23.1 函数的返回值(二)

    函数的返回值格式 function 函数名(){return 需要返回的结果;}函数名(); 注意: (1)函数只是实现某种功能,最终的结果需要返回给函数的调用者函数名(),通过 return 实现. ...

  7. python入门之函数调用内置函数_第九篇 python基础之函数,递归,内置函数

    阅读目录 一 数学定义的函数与python中的函数 二 为何使用函数 背景提要 三 函数和过程 四 函数参数 五 局部变量和全局变量 六 前向引用之'函数即变量' 七 嵌套函数和作用域 八 递归调用 ...

  8. 0717Python总结-return返回值,全局及局部变量,函数名的使用,函数的嵌套,nonlocal修改局部变量,及locals和globals

    一.return 返回值 自定义函数的返回值,return 可以把值返回到函数的调用处 (1) return + 六大标准数据类型 , 还有类和对象,函数 如果不定义return , 默认返回的是No ...

  9. Python函数常见return返回值类型

    Python函数常见return返回值类型Python函数return返回值类型主要包括: class 'int', class 'str', class 'tuple', class 'list', ...

最新文章

  1. C++在构造函数中调用构造函数
  2. 第一章:1.1.4信号运算
  3. 如何安装 jupyter lab 和 jupyter notebook?
  4. torch 变量_python变量
  5. Redis实现消息队列的4种方案
  6. 安卓学习笔记---Activity
  7. python 栈和队列_python 栈和队列的基本实现
  8. Angular 7和.NET Core 2.2——全球天气(第3部分)
  9. JS面向对象,__proto__和prototype详解
  10. 使用ZooKeeper ACL特性进行znode控制
  11. zookeeper中ExpiryQueue详解
  12. 微软商店无法下载应用,VS2019无法下载插件问题解决方案
  13. mysql b 树 字符串索引_Mysql从入门到入神之(四)B+树索引
  14. PHP将图片和文字合成到一张背景图上
  15. vue的两个核心是什么
  16. 基于UBAT工具的试验性应用
  17. DirectX9.0 入门手册
  18. QFile创建文件以及递归文件删除文件
  19. 基于Matlab的SSB信号调制和解调(内附源码)
  20. 酷客多小程序百城宣讲会-岳阳站圆满结束

热门文章

  1. setTimeout/setIntervel 的类型定义
  2. TMS320C6678开发笔记---SRIO 启动
  3. 网络编程——epoll
  4. iOS即时通讯进阶 - CoacoaAsyncSocket源码解析(Connect篇)
  5. Java+Swing+Mysql学生宿舍管理系统
  6. 怎么把.txt转换成html,怎么把txt转换成HTML
  7. 题目 1224: 整除的尾数
  8. 学习OSPF,有这一篇就够了
  9. apk protect下载地址
  10. 阿里云服务器(Windows)如何用苹果手机远程连接?