python3 format函数_【Python3 第三日】%和format格式化输出 函数
格式化输出
print(f'{d}')
会把d代表的意义转化掉,和format差不多
%格式化形式
#这里只说明字典使用
dict1 = {"what": "this year", "year": 2016}print("%(what)s is %(year)d" % {"what": "this year", "year": 2016}) #输出this year is 2016
print("%(what)s is %(year)d, %d" % (dict1,22) ) #输出this year is 2016
format格式化形式
位置映射
#后面的元素可以多
print("{}:{}".format('192.168.0.100', 8888, 222)) #输出如下192.168.0.100:8888
关键字映射
print("{server}{1}:{0}".format(8888,'192.168.1.100',server='Web Server Info :')) #Web Server Info :192.168.1.100:8888print('{name},{sex},{age}'.format(age=32,sex='male',name='zhangk')) #zhangk,male,32
元素访问
print("{0[0]}.{0[1]}".format(('baidu','com'))) #baidu.com
填充对齐
^、<、>分别是居中、左对齐、右对齐
精度设置
#填充与对齐
#填充常跟对齐一起使用
#^、<、>分别是居中、左对齐、右对齐,后面带宽度
#:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
print('{:>8}'.format('zhang'))print('{:0>8}'.format('zhang'))print('{:a<8}'.format('zhang'))print('{:p^10}'.format('zhang'))#精度与类型f
#精度常跟类型f一起使用
print('{:.2f}'.format(31.31412))#其他类型
#主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制
print('{:b}'.format(15))print('{:d}'.format(15))print('{:o}'.format(15))print('{:x}'.format(15))#用逗号还能用来做金额的千位分隔符
print('{:,}'.format(123456789))#输出如下:
zhang
000zhang
zhangaaa
ppzhangppp31.31
1111
15
17f123,456,789
进制及其他显示
b : 二进制
d :十进制
o :八进制
x :十六进制
!s :将对象格式化转换成字符串
!a :将对象格式化转换成ASCII
!r :将对象格式化转换成repr
其他情况
dict1 = {"one": 1, "two": 2, "three": 3}
list1 = ["one","two", "three"]
print("{}".format(dict1)) # 是字典
print("{0} {1} {2}".format(*dict1)) # 返回的是one two three
print('{one},{two},{three}'.format(**dict1)) # 返回的是元组对,
print('{one},{two},{three}'.format(one=1, two=2, three=3)) # 返回的是元组对,
print("{}".format(list1)) # 是序列
print("{0} {1} {2}".format(*list1)) # 返回的是one two three
class AssignValue(object):
def __init__(self, value):
self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value)) # "0" 是可选的,传入的是对象
#输出如下:
{'one': 1, 'two': 2, 'three': 3}
one two three
1,2,3
1,2,3
['one', 'two', 'three']
one two three
value 为: 6
函数
函数即变量,如果先使用fun(),然后在定义fun(),就会报错
函数基本形式
def函数名(参数列表):函数体
#直接调用
defhello():print("hello,world")returnhello()#返回函数
defhello1(x):defhello2(x):print(x, x)returnhello2
a= hello1("1")
a(1)#输出如下:
hello,world1 1
关键字参数,可变长参数
func1(m,n) #位置参数
func2(m=1) #默认参数,必须在位置参数后面,最好是不可变对象
func3(*args) #可变参数
func4(**kwargs) #关键字参数
func5(*args,a=1,b) #命名关键字参数
调用时候,位置参数一定在默认参数前面,否则报错function(one = 1,two = 2,3),也不可以调换顺序 错误例子
**接受的是字典,*接受的元组,调用时候如果有元组,列表,字典调用*,则添加*解包,调用**参数,字典用**解包
参数定义的顺序必须是:必选参数–>默认参数–>可变参数–>命名关键字参数–>关键字参数
命名关键字参数必须是a=2,这样指定
参数后面的冒号和->
def f(ham: str, eggs: str = 'eggs') -> str :
print("Annotations:", f.__annotations__)
print("Arguments:", ham, eggs)
return ham + ' and ' + eggs
f.__annotations__(显示参数注释和返回值注释) {'ham': , 'eggs': , 'return': }
其实只是提醒,并没有指定参数类型
abs() #绝对值
all() #如果全是真或者假,返回true,否则返回false 0,"",false 为假,其他为真
any() #一真为真,全假为假
ascii() #返回对应的ascii, 类似于repr() 和chr差不多,和ord相反,\64会变成4
bin() #oct() hex() 接受一个10进制数字,不可以是字符串,转为相对应的进制
bool #返回相对应的bool值,None,0,“”,{},【】,()为false
bytes() #把字符串转为相对应的字节,第一个是要转化的字符串,第一个参数是按什么编码,是不可变序列,
bytearray() #可以如果bytes,但是是可变序列,也可以直接添加参数bytearray(str.encode())
classmethod() staticmethod() #函数修饰符 和普通函数区别详见 普通函数是实例的, classmethod是对象的 staticmethod是不绑定参数的
callable:函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
complie() #讲.py或者str变成可执行的语句,详见
float() int() complex() #转为相对应的类型
getattr() hasattr() setattr() delattr() #详见 对应获取属性, 查询属性 设置 删除
dict() len() list() str() set() max() min() pow() print()#比较简单不说了
dir() #接收对象作为参数,返回该对象的所有属性和方法 和__dict__区别,__dict__是字典,dir()是列表,__dict__是dir()的子集 __annotation__是函数注释
help() #以树状形式返回所有的属性和方法,还有注释,这个不错哦
divmod(100,3) #返回一个(33,1)元组,第一个是商,第二个是余数
enumerate() #枚举可迭代对象,用于获取他的索引和值,for index,value in enumerate(list1):
eval() 和exec() #变成可执行代码, eval支持一行,有返回,exec支持多行,无返回
filter,format #参见本文的filter和上一篇的format
frozenset() #转换为不可变的集合
globals() # 返回一个字典,包括所有的全局变量与它的值所组成的键值对
locals() # 返回一个字典,包括所有的局部变量与它的值所组成的键值对
vars() #返回当前模块中的所有变量
hash() # 传入一个对象,返回相对应的hash值
id() #返回内存地址,可用于查看两个变量是否指向相同一块内存地址
input() #提示用户输入,接受字符串类型
isinstance() issubclass() #如名字
iter() #转为迭代器
next() #迭代器的下一个项目,和iter互用
map() #详见本文的map
memoryview() #查看内存对象,
open: #函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
propetry() #把某个方法变成属性,详见
range() #创建一个range()对象,可以迭代,可以转为列表
repr() #原形毕露
reversed() #将序列翻转,返回迭代器
round() #返回数字整数部分
slice(start,stop,stride) #相当于做一个切片模板,别人用就这么切
sorted() #详见本文
super() #调用父类的方法,顺序按照__mro__
type() #返回对象类型
zip() #打包成元组,zip(x1,x2,x3,x4) 把x1,x2,x3,x4中对应的元素打包成元组,哪个没有就停止
__import__:函数用于动态加载类和函数 。
高级函数
高阶函数:就是把函数当成参数传递的一种函数;例如
defadd(x:int, y, f):return f(x) +f(y)print(add(1.1, 2, abs)) #输出3.1
包含函数:
name = "1"
defouter(func):
name="2"func() #这里相当于调用,而不是内部函数defshow():print(name)
outer(show)#输出如下:
1
map,filter在python3中返回的是迭代对象,reduce在functools中,sorted没有了cmp
map()函数
python内置的一个高阶函数,它接收一个函数f和一个list,并且把list的元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表,如下:
a = [1,2,3,4,5]deff(x):return abs(x-3)print(map(f, a)) # 返回的是迭代对象,所以可以用for循环,循环完就里面就没有东西了
print(list(map(f,a))) #[2, 1, 0, 1, 2]
reduce()函数
reduce()函数也是python的内置高阶函数,reduce()函数接收的的参数和map()类似,一个函数f,一个list,但行为和map()不同,reduce()传入的参数f必须接受2个参数,
第一次调用是把list的前两个元素传递给f,第二次调用时,就是把前两个list元素的计算结果当成第一个参数,list的第三个元素当成第二个参数,传入f进行操作,以此类推,并最终返回结果;
from functools importreduce #在python3里面不是内置,需要导deff(x,y):return x+yprint(reduce(f,[1,2,3,4,5])) #15
注解:
1,计算a=f(1,2)的值为3
2,计算b=f(a,3)的值为6
3,计算c=f(b,4)的值为10
4,计算d=f(c,5)的值为15
filter()函数
filter()函数是python内置的另一个有用的高阶函数,filter()函数接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回true或false,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件的元素组成的list;例
a = [1,2,3,4,5]deff(x):return x % 2 == 1
print(filter(f, a)) #
print(list(filter(f, a))) #[1,3,5]
返回的是迭代对象,需要用list转换成列表
注解:
1.llist元素以此传入到函数f
2.f判断每个元素是否符合条件,把符合条件的留下,不符合条件的舍弃
3.把最终符合条件的元素组成一个新的列表
sorted()函数
sorted() 函数对所有可迭代的对象进行排序操作。
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
sorted 语法:
sorted(iterable,key=None,reverse=False)
参数说明:
iterable -- 可迭代对象。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 可以是变量,可以是函数或者lambda
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
多级排序,使用operator.itemgetter例如:sorted(list1, key=itemgetter(0,1)) 先用第0个,再用第一个排序
返回重新排序的列表。
以下实例展示了 sorted 的使用方法:
>>>a= [5,7,6,3,4,1,2]
>>> b= sorted(a)# 保留原列表
>>> a[5, 7, 6, 3, 4, 1, 2]
>>> b[1, 2, 3, 4, 5, 6, 7]
>>> L=[('b',2),('a',1),('c',3),('d',4)]
>>> sorted(L, cmp=lambdax,y:cmp(x[1],y[1]))# 利用cmp函数
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>> sorted(L, key=lambdax:x[1])# 利用key
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
匿名函数
忘了哪里说的尽量少用
ython 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法
lambda函数的语法只包含一个语句,如下:
lambda[arg1 [,arg2,.....argn]]:expression
如下实例:
#!/usr/bin/python# -*- coding: UTF-8 -*-# 可写函数说明sum =lambdaarg1,arg2:arg1 +arg2;# 调用sum函数print"相加后的值为 : ",sum(10,20)print"相加后的值为 : ",sum(20,20)
以上实例输出结果:
相加后的值为:30相加后的值为:40
lambda多重调用:和偏函数对比
x = lambda x:(lambda y : x/y)print(x(1)(1)) #1.0
print(x(2)(1)) #2.0
函数面试题
1、默认参数
默认参数在程序开始时候,装载完毕,如果是可变参数,内部引用的时候会不再开辟新的空间,用的是func.__deflaut__的值,,但如果不是可变参数,每次变化都是新的空间,如None
def f(arg, li =[]):
li.append(arg)returnli
v1= f(1) #用的是默认参数【】的空间print(v1)
v2= f(2,[]) #这是【】是新的空间print(v2)
v3= f(3)print(v3) #用的是默认参数【】的空间,尽量默认参数不要用可变列表print(v1)#参数变化
[1]
[2]
[1, 3]
[1, 3]
python3 format函数_【Python3 第三日】%和format格式化输出 函数相关推荐
- python3.6中format函数_Python3.6新特性:f-strings格式化输出
按照惯例,吟诗一首,苏轼<江城子·密州出猎> 老夫聊发少年狂,左牵黄,右擎苍,锦帽貂裘,千骑卷平冈. 为报倾城随太守,亲射虎,看孙郎. 酒酣胸胆尚开张,鬓微霜,又何妨!持节云中,何日遣冯唐 ...
- python3.0制表符_④ Python3.0字符串
字符串无论是python或者其他语言,是最常用的数据类型之一: 这儿注意在python中可以通过使用引号( ' 或 " )来创建字符串.使用三引号('''或""" ...
- python3 beautifulsoup 表格_[Python3爬虫]Beautiful Soup解析库
解析库与Beautiful Soup 通过request库,我们已经能够抓取网页信息了,但要怎么提取包含在Html代码里面的有效信息呢?谈到匹配有效信息你肯定会想到正则表达式,这里就不讨论了,实际上关 ...
- python len函数_知识清单Python必备的69个函数,你掌握了吗?
本文纲要 Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间.目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很 ...
- python偏函数和高阶函数_【Python入门】8.高阶函数之 匿名函数和偏函数
目录 高阶函数 匿名函数 lambda 偏函数 高阶函数 匿名函数 lambda lambda,即希腊字母λ.顾名思义,匿名函数没有函数名,在运用时采取lambda x : ...的方式,如lambd ...
- 文件从头开始读函数_如何从头开始编写自己的Promisify函数
文件从头开始读函数 介绍 (Introduction) In this article, you will learn how to write your own promisify function ...
- lambda调用函数_从另一个Lambda函数调用AWS Lambda函数
lambda调用函数 In this article, I am going to explain how to create an AWS Lambda function and then call ...
- append函数_连载|想用Python做自动化测试?函数的参数传递机制及变量作用域
" 这一节有点难.看不懂没关系.继续往后学,回头再来看." 10.6 函数参数传递的机制 10.6.1 值传递与引用传递 编程语言的参数传递机制通常有两种: 值传递 拷贝参数的值, ...
- memcpy函数_如何理解c语言中的回调函数
在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 这段话不是那么好理解,不同语言实现回调的方式有些许不 ...
最新文章
- 单点登录与权限管理本质:session和cookie介绍
- Android开发之大位图压缩水印处理
- template与图片懒加载
- vue中使用checkbox
- Spring BeanFactory实例化Bean的过程
- HTML坐标不随着屏幕大小改变,HTML热区map坐标,随窗口大小自适应办法(javascript)...
- [渝粤教育] 西北大学 仪器分析 参考 资料
- 在MSF中怎么区分易混淆的工作项类型:Bug、风险和问题(我个人的理解)
- MogDB/openGauss 生态工具-MTK(Migration ToolKit) 数据库迁移
- pytorch 中的数据类型,tensor的创建
- mysql login_HOW to login MYSQL, Help, and Select Database
- 51nod-1422:沙拉酱前缀
- 51nod 1243 排船的问题(二分)
- 测试类写法以及几种常用方式
- 苹果电脑的文件怎样拷贝入移动硬盘里
- Win7 - 隐藏计算机中收藏夹和库
- 图论(七)哥尼斯堡七桥问题
- playwright-python 截图、录制视频、录制接口(二)
- Python3 解决编码问题: UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position
- 《深入学习VMware vSphere 6》——1.2 虚拟化应用概述