python之路——内置函数与匿名函数

内置函数

python里的内置函数。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了,必须等我们学了新知识才能解开封印的。那今天我们就一起来认识一下python的内置函数。这么多函数,我们该从何学起呢?

上面就是内置函数的表,68个函数都在这儿了。这个表的顺序是按照首字母的排列顺序来的,你会发现都混乱的堆在一起。比如,oct和bin和hex都是做进制换算的,但是却被写在了三个地方。。。这样非常不利于大家归纳和学习。那我把这些函数分成了6大类。你看下面这张图

我们今天就要学习用粉红色标注出来的这四大块——56个方法。

作用域相关:

基于字典的形式获取局部变量和全局变量

globals()——获取全局变量的字典

locals()——获取执行本方法所在命名空间内的局部变量的字典

在全局执行这两种方法,结果相同

在局部执行,locals()表示函数内的名字,globals()始终不变

 其他:

字符串类型代码的执行——eval、exec、compile

eval()将字符串类型的代码执行并返回结果——有返回值

print(eval(‘1+2+3+4‘))

exec()将字符串类型的代码执行——没有返回值

print(exec(‘1+2+3+4‘))
exec("print(‘hello,world‘)")

compile  将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。

 1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。  

2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。  

3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为‘single‘。

>>> #流程语句使用exec
>>> code1 = ‘for i in range(0,10): print (i)‘
>>> compile1 = compile(code1,‘‘,‘exec‘)
>>> exec (compile1)
1
3
5
7
9

>>> #简单求值表达式用eval
>>> code2 = ‘1 + 2 + 3 + 4‘
>>> compile2 = compile(code2,‘‘,‘eval‘)
>>> eval(compile2)

>>> #交互语句用single
>>> code3 = ‘name = input("please input your name:")‘
>>> compile3 = compile(code3,‘‘,‘single‘)
>>> name #执行前name变量不存在
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    name
NameError: name ‘name‘ is not defined
>>> exec(compile3) #执行时显示交互命令,提示输入
please input your name:‘pythoner‘
>>> name #执行后name变量有值
"‘pythoner‘"

输入输出相关:

input()输入

s = input("请输入内容:”) #输入的的内容赋值给s变量
print(s)      #输入什么打印什么。数据类型是str

input的用法

print()输出

def print(self, *args, sep=‘ ‘, end=‘\n‘, file=None): # known special case of print
    """
    print(value, ..., sep=‘ ‘, end=‘\n‘, file=sys.stdout, flush=False)
    file:  默认是输出到屏幕,如果设置为文件句柄,输出到文件
    sep:   打印多个值之间的分隔符,默认为空格
    end:   每一次打印的结尾,默认为换行符
    flush: 立即把内容输出到流文件,不作缓存
    """

print源码剖析

f = open(‘tmp_file‘,‘w‘)
print(123,456,sep=‘,‘,file = f,flush=True)

#sep=‘,‘  分隔符

file关键字的说明

 import time
for i in range(0,101,2):
     time.sleep(0.1)
     char_num = i//2      #打印多少个‘*‘
     per_str = ‘\r%s%% : %s\n‘ % (i, ‘*‘ * char_num) if i == 100 else ‘\r%s%% : %s‘%(i,‘*‘*char_num)
     print(per_str,end=‘‘, flush=True)

#    \r 可以把光标移动到行首但不换行

打印进度条

数据类型相关:

type(n)返回变量n的数据类型

内存相关:

id(n) n是参数,返回一个变量的内存地址

hash(n) n是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错

t = (1,2,3)
l = [1,2,3]
print(hash(t))  #可hash
print(hash(l))  #会报错

‘‘‘
结果:
TypeError: unhashable type: ‘list‘
‘‘‘

hash实例

hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。

*每一次执行程序,内容相同的变量hash值在喝一次执行过程中不会发生改变。

文件操作相关:

open()打开一个文件,返回一个文件操作符(文件句柄)

操作文件的模式有r,w,a,r+,w+,a+共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+ab+)

可以用encoding指定编码

#创建文档并写入
f=open(‘print_test‘,‘w‘,encoding=‘utf-8‘)
print(121421313,file=f)

创建文档并写入

模块操作相关:

__import__导入一个模块

import time

导入模块

os = __import__(‘os‘)
print(os.path.abspath(‘.‘))

__import__

帮助:

help() 看一些帮助的信息   退出输入quit

和调用相关:

callable(n),n是参数,看这个变量是不是可调用

如果n是一个函数名,就会返回Ture

def func():pass
print(callable(func))  #参数是函数名,可调用,返回True
print(callable(123))   #参数是数字,不可调用,返回False

callable实例

查看参数所属类型的所有内置方法:

dir()默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量

print(dir(list))  #查看列表的内置方法
print(dir(int))  #查看整数的内置方法

查看某变量/数据类型的内置方法

和数字相关:

数字——数据类型相关:bool ,int ,float ,complex

数字——进制转换相关:bin ,oct ,hex

数字——数学运算:abs ,divmod ,min ,max ,sum ,round ,pow

和数据结构相关:

序列——列表和元组相关的:list和tuple

序列——字符串相关的:str ,format ,bytes ,bytearry ,memoryview ,ord ,chr ,ascii ,repr

ret = bytearray(‘alex‘,encoding=‘utf-8‘)
print(id(ret))
print(ret[0])
ret[0] = 65
print(ret)
print(id(ret))

bytearray

ret = memoryview(bytes(‘你好‘,encoding=‘utf-8‘))
print(len(ret))
print(bytes(ret[:3]).decode(‘utf-8‘))
print(bytes(ret[3:]).decode(‘utf-8‘))

memoryview

序列:reversed,slice

l = (1,2,23,213,5612,342,43)
print(l)
print(list(reversed(l)))

reversed

l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])

slice

数据集合——字典和集合:dict,set,frozenset

数据集合:len,sorted,enumerate,all,any,zip,filter,map

filter

filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:

def is_odd(x):
    return x % 2 == 1

然后,利用filter()过滤掉偶数

>>>filter(is_odd, [1, 4, 6, 7, 9, 12, 17])

结果:

[1, 7, 9, 17]

利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:

def is_not_empty(s):
    return s and len(s.strip()) > 0
>>>filter(is_not_empty, [‘test‘, None, ‘‘, ‘str‘, ‘  ‘, ‘END‘])

结果:

[‘test‘, ‘str‘, ‘END‘]

注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。

当rm为空时,默认删除空白符(包括‘\n‘, ‘\r‘, ‘\t‘, ‘ ‘),如下:

>>> a = ‘ 123‘
>>> a.strip()
‘123‘

>>> a = ‘\t\t123\r\n‘
>>> a.strip()
‘123‘

map

Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

有一个list, L = [1,2,3,4,5,6,7,8],我们要将f(x)=x^2作用于这个list上,那么我们可以使用map函数处理。

>>> L = [1,2,3,4,]
>>> def pow2(x):
... return x*x
...
>>> map(pow2,L)
[1, 4, 9, 16] 

sorted

对List、Dict进行排序,Python提供了两个方法
对给定的List L进行排序,
方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本
方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变

--------------------------------sorted---------------------------------------

sorted(iterable, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order.

A custom key function can be supplied to customise the sort order, and the
reverse flag can be set to request the result in descending order.

-----------------------------------------------------------------------------
参数说明:
iterable:是可迭代类型;
key:传入一个函数名,函数的参数是可迭代类型中的每一项,根据函数的返回值大小排序;
reverse:排序规则. reverse = True  降序 或者 reverse = False 升序,有默认值。
返回值:是一个经过排序的可迭代类型,与iterable一样。

例:

列表按照其中每一个值的绝对值排序

l1 = [1,3,5,-2,-4,-6]
l2 = sorted(l1,key=abs)
print(l1)
print(l2)

列表按照绝对值顺序

列表按照每一个元素的len排序

l = [[1,2],[3,4,5,6],(7,),‘123‘]
print(sorted(l,key=len))

列表按照每一个元素的长度排序

时间: 2024-12-14 18:18:54

python之路——内置函数与匿名函数的相关文章

Python之路----------内置函数

1.abs(x)绝对值 1 #coding=utf-8 2 a = 1 3 b = -2 4 print(abs(a)) 5 print(abs(b)) 2.all(iterable)可迭代对象里面所有内容为真返回真,空列表返回真 1 #非0就是真 2 l = [1, 2, 3, 4, 5, 6, -1, -2, 'a'] 3 print(all(l))#True 4 l = [1, 2, 3, 4, 5, 6, 0, -2, 'a'] 5 print(all(l))#False 6 l = [

python之路 内置函数,装饰器

一.内置函数 #绝对值 abs() #所有值都为真才为真 all() #只要有一个值为真就为真 any() #10进制转成二进制 bin() #10进制转成八进制 oct() #10进制转成十六进制 hex() #布尔值 bool() #字符转换成字节 bytes() #字节转换成字符 str() #对文件的操作 open() #基本流程 #打开文件 op_file=open("file name","rwb+") #操作文件 op_file.operation()

百万年薪python之路 -- 内置函数二 -- 最常用的内置函数

1.内置函数 1.1 匿名函数 匿名函数,顾名思义就是没有名字的函数(其实是有名字的,就叫lambda),那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话函数. 现在有一个需求:你们写一个函数,此函数接收两个int参数,返回 和的值. def func(a,b): return a+b print(func(3,4)) 那么 接下来我们用匿名函数完成上面的需求: func = lambda a,b: a+b print(func(3, 4)) # 7

NO.4:自学python之路------内置方法、装饰器、迭代器

引言 是时候开始新的Python学习了,最近要靠英语,可能不会周更,但是尽量吧. 正文 内置方法 Python提供给了使用者很多内置方法,可以便于编程使用.这里就来挑选其中大部分的内置方法进行解释其用途. abs() #求取绝对值,例子. a = -5 abs(a)#求绝对值 all() #迭代对象全为真,则返回Ture,否则返回False,例子. all([1,5,6])#True all([5,0,6])#False any() #与all类似,但是有真则返回Ture,全假返回False,例

python之路--内置常用模块

1. 简单的了解模块 你写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块. buildins  内置模块. print, input. random  主要是和随机相关的的内容 random() 随机小数 uninform(a,b) 随机小数 randint(a,b) 随机整数 choice() 随机选择一个 sample() 随机选择多个 shuffle() 打乱 import random print(random.randint(10,20)) from random imp

python之路——5、内置函数和匿名函数

阅读目录 楔子 内置函数 匿名函数 本章小结 返回顶部 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印一下自己的名字. 你们是怎么打的呀? 是不是print('xxx'),好了,现在你们结合我刚刚说的函数的调用方法,你有没有什么发现? 我们就猜,print有没有可能是一个函数? 但是没有人实现它啊...它怎么就能用了呢? 早在我们“初识函数”的

python——内置函数和匿名函数

内置函数 接下来,我们就一起来看看python里的内置函数.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了,必须等我们学了新知识才能解开封印的.那今天我们就一起来认识一下python的内置函数.这么多函数,我们该从何学起呢?     Built-in Functions     abs() dict() help() min() setat

python内置函数和匿名函数

内置函数 68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.     Built-in Functions     abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open()

Python 基础第十四天(内置函数和匿名函数)

今天主要内容 1.生成器补充--生成器推导式 2.内置函数 3.匿名函数 1.生成器推导式 (1)列表推导式:一行搞定 ,简单,感觉高端.但是,不易排错. 例: l1 = [] for i in range(1,12):  l1.append('python%s期' % i) print(l1) 生成式: l2 = ['python%s期' %i  i  for i in range(1,12)] print(l2) 结构: 循环模式[经过加工的i for i in 可迭代对象] 筛选模式 [经