函数名的使用和新版格式化输出

1. 函数名的运用

你们说一下,按照你们的理解,函数名是什么?

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

1.1 函数的内存地址

def func():       ?
    print("呵呵")
?print(func)结果: <function func at 0x1101e4ea0>

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

a = 1
b = 2
c = a + b
print(c)  # 3

a + b 并不是变量的相加,而是 两个变量指向的int对象的相加。

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

如果你理解了第一条,那么第二条就更容易的理解了:

def func():
    ?print("呵呵")    ?
print(func) ?
a = func  # 把函数当成一个变量赋值给另一个变量?
a() # 函数调用 func()

通过变量的赋值,变量a,和变量func都指向的这个函数的内存地址,那么a() 当然可以执行这个函数了。

1.3 函数名可以当做容器类的元素

其实这个也不难理解,函数名就是一个变量,我的变量是可以当做容器类类型的元素的:

a = 1
b = ‘alex‘
c = ‘武sir‘
l1 = [a, b, c]
for i in l1:
    print(i)
‘‘‘
# 结果:
1
alex
武sir
‘‘‘

那么函数名也是可以的:

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()

1.4 函数名可以当做函数的参数

变量可以做的,函数名都可以做到。

def func1():
    print(‘in func1‘)

def func2(f):
    print(‘in func2‘)
    f()

func2(func1)

1.5 函数名可以作为函数的返回值

def func1():
    print(‘in func1‘)

def func2(f):
    print(‘in func2‘)
    return f

ret = func2(func1)
ret()  # ret, f, func1 都是指向的func1这个函数的内存地址

小结:函数名是一个特殊的变量,他除了具有变量的功能,还有最主要一个特点就是加上() 就执行,其实他还有一个学名叫第一类对象

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

f-strings 是python3.6开始加入标准库的格式化输出新的写法,这个格式化输出比之前的%s 或者 format 效率高并且更加简化,非常的好用,相信我,你们学完这个之后,以后再用格式化输出这就是你们唯一的选择。

2.1 简单举例

他的结构就是F(f)+ str的形式,在字符串中想替换的位置用{}展位,与format类似,但是用在字符串后面写入替换的内容,而他可以直接识别。

name = ‘太白金星‘
age = 18
sex = ‘男‘
msg = F‘姓名:{name},性别:{age},年龄:{sex}‘  # 大写字母也可以
msg = f‘姓名:{name},性别:{age},年龄:{sex}‘
print(msg)
‘‘‘
输出结果:
姓名:太白金星,性别:18,年龄:男
‘‘‘

2.2 任意表达式

他可以加任意的表达式,非常方便:

print(f‘{3*21}‘)  # 63

name = ‘barry‘
print(f"全部大写:{name.upper()}")  # 全部大写:BARRY

# 字典也可以
teacher = {‘name‘: ‘太白金星‘, ‘age‘: 18}
msg = f"The teacher is {teacher[‘name‘]}, aged {teacher[‘age‘]}"
print(msg)  # The comedian is 太白金星, aged 18

# 列表也行
l1 = [‘太白金星‘, 18]
msg = f‘姓名:{l1[0]},年龄:{l1[1]}.‘
print(msg)  # 姓名:太白金星,年龄:18.

2.3 也可以插入表达式

可以用函数完成相应的功能,然后将返回值返回到字符串相应的位置

def sum_a_b(a,b):
    return a + b
a = 1
b = 2
print(‘求和的结果为‘ + f‘{sum_a_b(a,b)}‘)

2.4 多行f

name = ‘barry‘
age = 18
ajd = ‘handsome‘

# speaker = f‘‘‘Hi {name}.
# You are {age} years old.
# You are a {ajd} guy!‘‘‘

speaker = f‘Hi {name}.‘          f‘You are {age} years old.‘          f‘You are a {ajd} guy!‘
print(speaker)

2.5 其他细节

这里有一些注意的细节,了解一下就行。

print(f"{{73}}")  # {73}
print(f"{{{73}}}")  # {73}
print(f"{{{{73}}}}")  # {{73}}
m = 21
# ! , : { } ;这些标点不能出现在{} 这里面。
# print(f‘{;12}‘)  # 报错
# 所以使用lambda 表达式会出现一些问题。
# 解决方式:可将lambda嵌套在圆括号里面解决此问题。
x = 5
print(f‘{(lambda x: x*2) (x)}‘)  # 10

总结:f-string的格式化输出更加简洁,方便,易读。而且他的处理速度对之前的%s 或者format 有了较高的提升,所以可以使用此种格式化输出。

原文地址:https://www.cnblogs.com/shangping/p/11408737.html

时间: 2024-11-05 23:35:33

函数名的使用和新版格式化输出的相关文章

Debug格式化输出----基于C语言

Debug格式化输出----基于C语言 1. 使用宏实现 举例: #include <stdio.h> #define ECHO_COLOR_NONE "\033[0;0m" #define ECHO_COLOR_GREEN "\033[0;32m" #define debug(fmt, args...) printf(ECHO_COLOR_GREEN"Debug: " fmt "(file: %s, func: %s, l

从零开始学Go之基本(二):包、函数声明与格式化输出

包: 每个go程序在开头都要有一个package来声明当前包 其中包含main函数的包必须为main包来声明入口 从零开始学Go之基本(二):包.函数声明与格式化输出 导入包: import 包名称 //import "fmt" 单个导入 import ( "fmt" "math" ) 引用其他包时必须通过import来获取,根据包中的变量或者函数的开头大小写来判断能否导出:大写才能导出,否则不能被外部包引用 函数声明: func 函数名 (函数

格式化输出的几种方法 主要介绍format函数的用法

1 str自带函数格式化输出 rjust() ljust() center() zfill() zfill是补齐零 介绍: rjust(...) S.rjust(width[, fillchar]) -> string 给字符串格式化输出,对字符串本身不做处理,只是返回一个格式化过的字符串,可以指定字符串宽度,并且指定填充的字符,默认填充空格! 作用: 对齐输出 举例: In [26]: s1="1"         In [27]: s2="1234"   

Python print函数用法,print 格式化输出

原文地址:http://blog.csdn.net/zanfeng/article/details/52164124 使用print输出各型的 字符串 整数 浮点数 出度及精度控制 strHello = 'Hello Python' print strHello #输出结果:Hello Python #直接出字符串 1.格式化输出整数 python print也支持参数格式化,与C言的printf似, strHello = "the length of (%s) is %d" %('H

python04基本数据类型-集合/格式化输出/函数/参数

一.集合 1.定义 由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key. 2.特性 集合本身是可变类型,但是集合中的元素必须是不可变类型,并且是不重复的,无序的. 3.作用 关系测试:去重 二.集合的常用方法 1.创建一个集合,有两种方式: #s1 = {1,2,3,3,3,3,4}或者s = set('hello') 2.添加元素 # s1.add(5)# s1.add(6,7,8,9) #只能接收一个值,传4个值会报错 3.清空集合 # s.clear() 4.拷

perl5 第十章 格式化输出

第十章 格式化输出 by flamephoenix 一.定义打印格式二.显示打印格式三.在打印格式中显示值  1.通用的打印格式  2.格式和局域变量  3.选择值域格式  4.输出值域字符四.输出到其它文件五.分页六.格式化长字符串七.用printf格式化输出 我们已经见过用print函数将原始的未格式化的文本输出到文件,本章讲述如何用函数write和打印格式来生成格式化的输出.二.显示打印格式    打印格式的显示有两步:     1.将系统变量$~设成所要使用的格式     2.调用函数w

Node读取和写入json,格式化输出json

今天是在深信服实习的第5天,接到任务要做产品的外语版,Web端的实习生目前只有我一个,前端和PHP的都要我来做... 现在需要一个写一个脚本,处理两个json文件,把Bjson文件在A中没有的中文词条都要找出来写入另外一个json,实际需求要复杂得多,先写个初步demo: var fs = require('fs'), path = require('path'); let ans = {}; //求一方的差集(不是严格意义上的差集,只是一边的) function diff(a, b) { va

While循环,格式化输出,算术运算符,改py文件名字

一.While循环 while来打印每个元素 s = "风扇哥门神哥,邓生" i = 0 while i <len(s): print(s[i]) i+=1 while循环的感悟:while循环多用在交互程序里,做判断:而for循环多是用来获取某个类型集合(list,str,tupe,set...)里面的值 content  #内容的意思,是变量名count    #计数的意思,是变量名 break #彻底的结束循环 continue #停止本次循环,继续执行下次循环 break

格式化输出(fmt包)

fmt 包 功能:fmt包实现了类似C语言printf和scanf的格式化I/O.格式化动作('verb')源自C语言但更简单. fmt格式化输出 Printf 函数有超过10个各种转义字符,Go 程序员称为 verb.下表不完整,但是它说明了很多可用的功能: verb 描述 %d 十进制数 %x, %o, %b 十六进制,八进制,二进制数 %f, %g, %e 浮点数 %t 布尔型 %c 字符(Unicode码点) %s 字符串 %q 带引号字符串或者字符 %v 内置格式的任何值 %T 任何值