格式化输出

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格式化输出 函数相关推荐

  1. python3.6中format函数_Python3.6新特性:f-strings格式化输出

    按照惯例,吟诗一首,苏轼<江城子·密州出猎> 老夫聊发少年狂,左牵黄,右擎苍,锦帽貂裘,千骑卷平冈. 为报倾城随太守,亲射虎,看孙郎. 酒酣胸胆尚开张,鬓微霜,又何妨!持节云中,何日遣冯唐 ...

  2. python3.0制表符_④ Python3.0字符串

    字符串无论是python或者其他语言,是最常用的数据类型之一: 这儿注意在python中可以通过使用引号( ' 或 " )来创建字符串.使用三引号('''或""" ...

  3. python3 beautifulsoup 表格_[Python3爬虫]Beautiful Soup解析库

    解析库与Beautiful Soup 通过request库,我们已经能够抓取网页信息了,但要怎么提取包含在Html代码里面的有效信息呢?谈到匹配有效信息你肯定会想到正则表达式,这里就不讨论了,实际上关 ...

  4. python len函数_知识清单Python必备的69个函数,你掌握了吗?

    本文纲要 Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间.目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很 ...

  5. python偏函数和高阶函数_【Python入门】8.高阶函数之 匿名函数和偏函数

    目录 高阶函数 匿名函数 lambda 偏函数 高阶函数 匿名函数 lambda lambda,即希腊字母λ.顾名思义,匿名函数没有函数名,在运用时采取lambda x : ...的方式,如lambd ...

  6. 文件从头开始读函数_如何从头开始编写自己的Promisify函数

    文件从头开始读函数 介绍 (Introduction) In this article, you will learn how to write your own promisify function ...

  7. lambda调用函数_从另一个Lambda函数调用AWS Lambda函数

    lambda调用函数 In this article, I am going to explain how to create an AWS Lambda function and then call ...

  8. append函数_连载|想用Python做自动化测试?函数的参数传递机制及变量作用域

    " 这一节有点难.看不懂没关系.继续往后学,回头再来看." 10.6 函数参数传递的机制 10.6.1 值传递与引用传递 编程语言的参数传递机制通常有两种: 值传递 拷贝参数的值, ...

  9. memcpy函数_如何理解c语言中的回调函数

    在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 这段话不是那么好理解,不同语言实现回调的方式有些许不 ...

最新文章

  1. 单点登录与权限管理本质:session和cookie介绍
  2. Android开发之大位图压缩水印处理
  3. template与图片懒加载
  4. vue中使用checkbox
  5. Spring BeanFactory实例化Bean的过程
  6. HTML坐标不随着屏幕大小改变,HTML热区map坐标,随窗口大小自适应办法(javascript)...
  7. [渝粤教育] 西北大学 仪器分析 参考 资料
  8. 在MSF中怎么区分易混淆的工作项类型:Bug、风险和问题(我个人的理解)
  9. MogDB/openGauss 生态工具-MTK(Migration ToolKit) 数据库迁移
  10. pytorch 中的数据类型,tensor的创建
  11. mysql login_HOW to login MYSQL, Help, and Select Database
  12. 51nod-1422:沙拉酱前缀
  13. 51nod 1243 排船的问题(二分)
  14. 测试类写法以及几种常用方式
  15. 苹果电脑的文件怎样拷贝入移动硬盘里
  16. Win7 - 隐藏计算机中收藏夹和库
  17. 图论(七)哥尼斯堡七桥问题
  18. playwright-python 截图、录制视频、录制接口(二)
  19. Python3 解决编码问题: UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position
  20. 《深入学习VMware vSphere 6》——1.2 虚拟化应用概述

热门文章

  1. javascript打印1-100内的质数
  2. c 语言 volatile 关键字
  3. 新顶级域名、Cloud域名
  4. ASP.NET中XML数据的处理
  5. 10-Mybatis 多表查询之多对多
  6. 文件传输服务器的默认端口,服务器上传文件端口
  7. python常用排序_python中的各种排序
  8. 无线鼠标可以强制配对_酷冷至尊MM831三模游戏鼠标评测
  9. 萌宠主题页面设计灵感
  10. 电商美工必看|Banner设计没灵感?传说中大气的画册风格给你灵感