#coding:utf-8
#Python内置函数
#和数字计算相关的内置函数
print(abs(-9)) #求绝对值
#输出 9
print(max(23,5,4,67,89)) #输出最大值
#输出89
print(max('r','yu','m')) #max也可以传入字符
#输出yu
print(max([2,4,34,9,78,5])) #max也可以传列表
#输出78
print(max((2,4,34,9,78,5))) #max也可以传Tuple元组
#输出78
print(sum([2,4,3])) #传入可迭代对象,传入list
#输出9
print(sum((2,4,3))) #传入可迭代对象,传入元组
#输出9
print(len((2,3,4,5)))
#输出4
print(len({'name':'ben','age':22}))
#输出2
print(2**3) #2的3次方
#输出8
print(pow(2,3)) #2的3次方 ,执行效率比上面的低
#输出8
print(pow(2,3,5)) #(2**3)%5, 幂次方的对某个数的余数
#输出 3
print(range(9))
#输出 [0, 1, 2, 3, 4, 5, 6, 7, 8]
print(divmod(8,2)) # divmod 8/4 得到的结果 (商,余数)
#输出 (4, 0) #(商,余数)
print(round(3.1415926))
#输出 3.0
print(round(-2.11))
#输出 -2.0
#类型转换的内置函数
#复数(a+bj) #实部a 虚部j
print(int(3.140)) #int-->整数
#输出 3
print(int('231'))
#输出 231
#print(int('a')) #错误
#print(int('abc')) #错误
print(float(2)) #浮点数
#输出 2.0
print(complex(2,3))
#输出(2+3j)
print(type(str(123)))
#输出 <type 'str'>
print(list(range(0,3)))
#输出(0, 1, 2)
print(tuple(range(3)))
#输出(0, 1, 2)
print(dict(name='ben',age=12))
#输出{'age': 12, 'name': 'ben'}
#单个字符和整数之间的转换
print(ord('a'))
#输出 97
print(chr(97))
#输出 a
print(bool(8))
#输出True
print(bool(0))
#输出False
print(bool({}))
#输出False
print(bool(''))
#输出False
print(bool(' '))
#输出True
print(True+2)
#输出 3
#callable函数 参数是否能够调用
print(callable(123))
#输出 False
def func():
pass
print(callable(func))
#输出 True
#slice 函数,切片
print((23,45,32)[slice(0,1)])
#输出 (23,)
print([23,45,32][slice(0,1)])
#输出 [23]
print(('1234')[slice(0,2)])
#输出 12
print(list(range(16)[slice(1,12,2)]))
#输出 [1, 3, 5, 7, 9, 11]
#进制转换
#十进制数据 0-9
#二进制数据 0,1
#八进制数据 0-7
#十六进制数据 0-9 ,A,B
print(oct(20)) #十进制--->八进制
#输出 024
print(bin(20)) #十进制--->二进制
#输出 0b10100
print(hex(20)) #十进制--->十六进制
#输出 0x14
#序列操作
print(all(['2','23']))
#输出 True
print(all((False,True,'ben',1)))
#输出 False
print(any((0,2)))
#输出 True
#sort函数 ,sorted函数
#反转函数
print(list(reversed((1,2,3,4))))
#输出 [4, 3, 2, 1]
#面向对象编程
class MyClass():
def run(selfs):
print('开始跑步')
def eat(self):
print('开始吃饭')
def dog_fun(self):
print('小狗跑了')
t=MyClass()
print(hasattr(t,'run')) #MyClass里面是否有run方法
#输出 True
print(hasattr(t,'name'))
#输出 False
print(getattr(t,'run')) #获取
#输出 <bound method MyClass.run of <__main__.MyClass instance at 0x10df5d638>>
func=getattr(t,'run')
func()
#输出 开始跑步
print(getattr(t,'namr','0')) #第三个参数,默认值(找不到方法的时候返回值)
#输出 0
setattr(t,'name','ben')
print(getattr(t,'name'))
#输出 ben
#类型判断
print(isinstance(12,int))
#输出 True
print(isinstance(MyClass,object))
#输出 True
#其他内置函数
print(type(str(1+3)))
#输出 <type 'str
print(str('1+3'))
#输出 1+3
print(repr('1+3')) # repr面向解释器
#输出'1+3'
print(eval('1+3')) #计算字符串表达式的值
#输出 4
print(__doc__) #当前脚本文件的doc(文档及解释说明)
print(__file__) #当前文档脚本的完整路径
import os
print(os.__all__)
print(dir(os))
print(help(os))
#compile 函数 :字符串编译成字节代码
code=compile("print('ben')",'','exec')
eval(code)
#输出 ben
#第一个参数:字符串(指令)
#第二个参数:代码文件的名称,''(不是从文件获取)
#第三个参数:编译执行代码的方式
exec("print('ben')")
#输出 ben
#code=compile("open('code.py','a',encoding='utf-8').write('Angela')",'code.py','exec')
#exec(code)
#code=compile('3*4+5*6','','eval')
#print(code)