python函数(二)------内置函数

python函数(二)------内置函数

python一共为我们提供了69个内置函数

  • globals(无参数)和locals(无参数)
基于字典的形式获取局部变量和全局变量
li=[1,2]
def func():
    b=1
func()
print(globals())
#输出:
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00D9AF40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/Python_html/PythonProject/003函数/009内置函数.py', '__cached__': None, 'li': [1, 2],  'func': <function func at 0x012C4538>}
获取到了当前.py文件下所有的全局变量,包括所有导入的变量,但不能获取到函数里面的局部变量

如果要获取到函数里面的变量,就需要在局部名称空间用locals() ,获取执行本方法所在命名空间内的局部变量的字典
li=[1,2]
def func():
    a=1
    b=2
    print('局部名称空间输出:',locals())
func()
print('全局名称空间输出:',locals())
#输出:
局部名称空间输出: {'a': 1, 'b': 2}
全局名称空间输出: {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00D8AF40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/Python_html/PythonProject/003函数/009内置函数.py', '__cached__': None, 'li': [1, 2], 'func': <function func at 0x03164538>}
#可以看出,在全局名称空间使用locals,获取到的结果和globals一样,在函数体内(局部名称空间),获取到的就是函数体内的变量

  • id(agrs)方法: agrs是参数,返回一个变量的内存地址
a=1
print(id(a))#1493297072
  • help()方法:帮助方法
print(help(list))#返回列表所有的方法,及其如何使用
import time
print(help(time)) #返回time模块所有的方法,及其使用方法
  • dir():查看参数所属类型的所有内置方法
dir():默认查看全局空间内的属性和方法,也接受一个参数,查看这个参数内的方法或变量
print(dir(list))#返回列表,返回的列表里是list的所有方法
#输出:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
print(dir(int))#返回的是int的所有方法
  • oct()方法:将一个整数转换成8进制字符串
num=20
ret=oct(num)
print(ret)#0o24,就是24是20转换成八进制的结果

  • hex():用于将10进制整数转换成16进制,以字符串形式表示。
num=16
print(hex(num))#0x10
  • bin():返回一个整数或者长整数 的二进制形式
print(bin(66))#0b1000010
print(bin(6.66))#传入的参数不能是小数,会报错
  • divmod():把商和余数运算结果结合起来的元祖
ret=divmod(10,3)
print(ret)#(3, 1)
print(divmod(20,7))#(2, 6)
  • sum():求和函数
ret=sum(1,2,3,4)
print(ret)#报错
ret=sum([1,2,3,4])
print(ret)#10
ret=sum((1,2,3,4))
print(ret)#10
ret=sum({1,2,3,4})
print(ret)#10

  • max():返回最大的值的函数
print(max(1,2,5,10,20))#20
  • min():返回最小值的函数
print(min(1,2,3,5,-1,0))#-1
  • pow(x,y)方法:参数x为底,参数y为幂
ret=pow(3,2)
print(ret)#9

#类似方法:
3的2次方
print(3**2)#9
  • round(number1,number2):四舍五入,参数1是整数或者浮点数;参数2是保留小数点几位
ret=round(99.23456,2)
print(ret)#99.23
ret=round(99.55,1)
print(ret)#99.5
  • filter ()方法:
filter()函数接收一个函数 function 和一个list,这个函数function 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list,tuple或set。
例:从一个list [11, 41, 16, 17, 9, 14, 99]中删除奇数,保留偶数
def odd(x):
    return x%2==0
ret=filter(odd,[11,41,16,32,1,2,5])
print(ret)#不可以直接输出,这样输出的是一个地址,需要用list,tuple或set进行转换
print(list(ret))#[16, 32, 2]
#第二个传入的参数可以是列表,元组,集合等

例:删除 None 或者空字符串
def func(s):
    return s and len(s.strip()>0)
ret=filter(func,['this',None,'  ',' ','info'])
print(tuple(ret))#('this', 'info')

注:strip()方法默认删除空白符,包括'\n','\r','\t',''
a = '\t\t123\r\n' 
ret=a.strip()  
print(ret)#123
  • map()方法(和filter()类似)
map() 是python的内置函数,会根据提供的函数对指定序列做映射。
对可迭代函数*iterables中的每个元素应用func方法,将结果作为迭代器对象返回。
注意:map()函数返回的是一个新的迭代器对象,不会改变原有对象

例:计算平方数
def square(x):
   return x * x
obj = map(square, [1, 2, 3])
print(type(obj), obj)
print(list(obj))
#输出:
<class 'map'> <map object at 0x014BD088>
[1, 4, 9]

使用 lambda 匿名函数计算平方数
square = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
print(square, list(square))#<map object at 0x02ABD208> [1, 4, 9, 16, 25]

例二:按首字母大写,后字母小写规则显示名字
name_list = ['chengzi', 'JACK', 'wangLi']
def format_name(name_list):
    return name_list[0:1].upper()+name_list[1:].lower()
obj = map(format_name, name_list)
print(obj, list(obj))
#输出:<map object at 0x0124D1F0> ['Chengzi', 'Jack', 'Wangli']
  • sort():排序
sort(iterable,key=None,reverse=False)方法:默认升序
iterable:是可迭代类型;
key:传入一个函数名,函数的参数是可迭代类型中的每一项,根据函数的返回值大小排序;
reverse:排序规则. reverse = True  降序 或者 reverse = False 升序,有默认值。
返回值:有序列表
默认升序
li= [12,25,3,664,55,66,-4,-1]
li.sort()
print(li)#[-4, -1, 3, 12, 25, 55, 66, 664]4
降序:
li= [12,25,3,664,55,66,-4,-1]
li.sort(reverse=True)
print(li)#[664, 66, 55, 25, 12, 3, -1, -4]

sorted给字典排序
给keys排序:
dic={"k":26,"a":2,"p":90}
ret=sorted(dic)
print(ret)#['a', 'k', 'p']

给value排序:
dic={"k":26,"a":2,"p":90}
val=list(dic.values())
ret=sorted(val)
print(ret)#[2, 26, 90]

li= [12,25,3,664,55,66,-4,-1]
ret=sorted(li,reverse=True)
print(ret)#[664, 66, 55, 25, 12, 3, -1, -4]
posted @ 2021-03-17 22:13  辰-月  阅读(123)  评论(0)    收藏  举报