DAY13 内置函数

Posted hebbhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DAY13 内置函数相关的知识,希望对你有一定的参考价值。

内置函数

   内置函数就是python提供给我们的函数,可以随时拿来使用。截止到python3.6.2,一共有68种内置函数。按照功能,可以分为以下几类:

   作用域相关的:2种。  迭代器/生成器相关的:3种。   基础数据类型相关的:38种。  反射相关:4种。  面向对象相关的:9种。  其他:12种。

作用域相关

   globals():以字典的形式返回当前位置的所有全局变量。

name = ‘he‘
print(globals())
>>>
{‘__name__‘: ‘__main__‘, ‘__doc__‘: ‘locals():以字典的形式返回当前位置的局部变量‘, ‘__package__‘: None, ‘__loader__‘: <_frozen_importlib_external.SourceFileLoader object at 0x00000244F0078630>, ‘__spec__‘: None, ‘__annotations__‘: {}, ‘__builtins__‘: <module ‘builtins‘ (built-in)>, ‘__file__‘: ‘E:/python_training_s1/day13/builtin_func.py‘, ‘__cached__‘: None, ‘name‘: ‘he‘}

   locals():以字典的形式返回当前位置的所有局部变量。

b =2
def func():
    x = 1          #函数中的变量才是局部变量
    print(locals())
func()
>>>
{‘x‘: 1}

其他相关

   字符串类型代码的执行:不建议使用。

      eval():执行字符串类型的代码,并返回结果。

      exec():执行字符串类型的代码,但是没有返回值。

      compile():编译字符串类型的代码,使得其能够exec来执行或者可以通过eval来取值。

#eval()
s1 = ‘1+2+3‘
print(eval(s1),type(eval(s1)))
>>>
6 <class ‘int‘>             #处理字符串类型的代码,并返回结果,而且还会转换成结果对应的数据类型。

#eval()例子二
s2 = "{‘name‘:‘he‘}"
print(eval(s2),type(eval(s2)))
>>>
{‘name‘: ‘he‘} <class ‘dict‘>


#exec():执行字符串类型的代码,但是没有返回值。主要用于处理代码流
s1 = ‘1+2+3‘
print(exec(s1))
>>>
None        #exec()无返回值,所以为None

s3  = ‘‘‘for i in range(3):print(i)
‘‘‘
exec(s3)
>>>
0
1
2

    输入输出相关:

        input():用户输入,内容都转换为字符串类型。

       print() : 输出命令

#input()
name = input(‘请输入你的姓名:‘)      #用户输入的内容都被赋值给name
print(name)                # 变量的类型都是字符串类型


#print(self, *args, sep=‘ ‘, end=‘
‘, file=None)
‘‘‘                 
sep:   打印多个值之间的分隔符,默认为空格
end: 每一次打印的结尾,默认为换行符
file: 默认是输出到屏幕,如果设置为文件句柄,重定向输出到文件中
‘‘‘

print(666,end=‘‘)  #默认print有一个换行换行符
print(777)
>>>
666777


print(1,2,3,4,5,sep=‘|‘)   #seq定义连接符,默认是空格
>>>
1|2|3|4|5

f = open(‘log.txt‘,‘w‘,encoding=‘utf-8‘)
print(‘i love python‘,file=f)  #类似重定向功能,把内容重定入文件
f.close()

   内存相关:

    hash():返回一个可哈希变量的哈希值,不可哈希的变量使用会报错。

     id():返回一个对象的内存地址。

 

# id():返回一个对象的内存地址
s1 = ‘he‘
print(id(s1))
>>>
2096407672512


#hash() 
print(hash(‘name‘))
print(hash(‘name1‘))              #无论字符串长度多长,都是返回一定长度的哈希值
print(hash(1))                    #对于数值类型,哈希值就等于数值本身
print(hash(100))
print(hash(1000))
>>>
-5080043217602082193               
-8127996159439637239
1
100
1000

 

   文件操作类型:

    open():打开文件,返回一个文件句柄。

   模块操作相关:

    __import__ : 用于动态加载模块和类。

 

#导入模块
import time

#使用__import__导入模块
os = __import__(‘os‘)
print(os.path.abspath(‘.‘))
>>>
E:python_training_s1day13

 

    调用相关:

    callable():判断一个对象是否可调用

 

name = ‘he‘
def func():
    pass
print(callable(name))          #普通变量不可调用
print(callable(func))            #截止到目前的学习中,函数是可以被调用的
>>>
False
True

 

  查看内置属性:

     dir():查看对象的所有方法

s1 = ‘abc‘
print(dir(s1)) #查找字符串的所有方法
>>>
[‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getnewargs__‘, 
‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mod__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘,
‘__repr__‘, ‘__rmod__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘capitalize‘, ‘casefold‘, ‘center‘, ‘count‘, ‘encode‘, ‘endswith‘, ‘expandtabs‘,
‘find‘, ‘format‘, ‘format_map‘, ‘index‘, ‘isalnum‘, ‘isalpha‘, ‘isdecimal‘, ‘isdigit‘, ‘isidentifier‘, ‘islower‘, ‘isnumeric‘, ‘isprintable‘, ‘isspace‘, ‘istitle‘, ‘isupper‘, ‘
join‘, ‘ljust‘, ‘lower‘, ‘lstrip‘, ‘maketrans‘, ‘partition‘, ‘replace‘, ‘rfind‘, ‘rindex‘, ‘rjust‘, ‘rpartition‘, ‘rsplit‘, ‘rstrip‘, ‘split‘, ‘splitlines‘, ‘startswith‘, ‘strip‘, ‘swapcase‘,
‘title‘, ‘translate‘, ‘upper‘, ‘zfill‘]

 

迭代器/生成器相关

    range():可创建一个整数对象,一般用在 for 循环中。python2.x中直接返回列表,python3.x中返回的是range对象。

    next():内部调用的是__next__()方法,返回迭代器的下一个对象。

    iter():内部调用的是__iter__()方法,用来将一个可迭代对象转换为迭代器。

#range()
for i in range(1,10):
    print(i)


#next():返回迭代器的下一个元素
g1 = (i for i in range(1,10))
print(next(g1))
print(next(g1))
>>>
1
2


#iter():把一个可迭代对象转换为迭代器。

from collections import Iterable,Iterator
l1 = [1,2,3]
print(isinstance(l1,Iterable))

iter_l1 = iter(l1)
print(isinstance(iter_l1,Iterator))

 

基础数据类型相关

   数据类型:

     bool(): 用于将给定的参数转换为布尔型,如果没有参数,则返回False.

     int():  用于将一个字符串或数字转化为整型。

      float():用于将字符串或者整数转化为浮点型。

      complex():复数。

   数字之进制转换相关:

     bin():把十进制转换为二进制。

     oct():把十进制转换为八进制

     hex():把十进制转换为十六进制。

   数据运算相关:

     abs():返回绝对值.

print(abs(100))
print(abs(-100))
>>>
100
100

 

     divmod():计算除数与被除数的商和余数,把(商,余数)作为一个元组返回。

print(divmod(10,3))
>>>
(3, 1)

    round():保留浮点数的小数位,四舍五入,默认取整。

print(round(3.1415926,4))
print(round(3.1415926))
>>>
3.1416
3

   pow():求x的y次幂,如果有第三个参数就是,为x的y次幂对z的取余。

print(pow(2,5))            #求2的5次方
print(pow(2,5,5))         #求2的5次方对5求余    
>>>
32
0

  sum(): 对可迭代对象进行求和。可以传入第二个参数,当做起始值。

l1 = [1,2,3,4,5]
print(sum(l1))           #对l1进行求和,默认从0开始
print(sum(l1,100))    #对l1进行求和,从100开始
>>>
15
115

  min():返回可迭代对象中的最小值。可以传入key值,按照函数规则,返回最小值。

#min返回可迭代对象的最小值
l1 = [2,1,3,4,5]
print(min(l1))
>>>
1


#传入key参数,按照自定义的函数规则,返回最小值。
# 第一步:先将iterable的每一个元素都当做函数的参数传进去。
# 第二步:按照返回值去比较大小。

l1 = [(‘alex‘,1000),(‘taibai‘,18),(‘wusir‘,500)]
def func(x):
    return x[1]
print(min(l1,key=func))
>>>
(‘taibai‘,18)

  max():同上,返回可迭代对象中的最大值。可以传入key值,按照函数规则,返回最大值。

 

     

    

 

    

 

 

        









以上是关于DAY13 内置函数的主要内容,如果未能解决你的问题,请参考以下文章

python之路--day13---函数--三元表达式,递归,匿名函数,内置函数-----练习

Python之路day13-内置函数_lambda_闭包

13 个非常有用的 Python 代码片段

day14 , day15--内置函数

day17 内置函数

python-day3-内置函数与字符字节之间的转换