python初识之内置函数一

丶灬走出姿态 提交于 2020-02-29 08:26:04

  python的内置函数一共有68个,这里先学习55个

作用域相关:locals()和globals()

  locals() 返回本地作用域中的所有名字

  globals() 返回全局作用域中的所有名字

迭代器生成器相关:range() 、iter()、next()

  range() 可迭代的

  iter() 可迭代的.__iter__()就能得到一个迭代器

  next() 迭代器.__next__()就能得到一个值  == next()

查看内容:dir()

  dir() 查看一个对象拥有的方法

调用相关:callable()、help()

  callable() 主要用来检验函数能否被调用

  help() 查看函数帮助

def func():
    print("hello")
print(callable(func))
help(func())

  ps:某个方法属于某个数据类型的变量,就可以用.调用,如果某个方法不依赖于任何数据类型,就可以直接调用,那么它就是内置函数或自定义函数

 文件操作相关:open()、close()

  f = open('文件名',打开方式,编码方式) 打开方式有r,w,a,r+,w+,a+六种,得到一个文件句柄

  记得使用完后要关闭文件释放内存。f.close()

内存相关:id()、hash()

  id()查看变量的内存地址

  hash()判断变量是否可哈希,不可哈希时会报错,可哈希时返回一个int类型的数字

     对于相同可哈希数据的哈希值在一次程序的执行过程中总是不变的

输入输出相关:input()、print()

  input()用户输入,注意输入的是字符串,根据后续要求进行转换使用

  print()输出

    1、print()中end的用途

print('123',end='')  # end='',在print中end默认是换行符,这里转换成空字符
print('456')

    2、print()中sep的用途

print(1,2,3,4,sep='q')  # 指定输出多个值中间的分隔符

    3、print()中flush的用途

print(' 222  ',flush=True)  # 立刻把内容输出到流文件,不做缓存

    4、print()中file的用途

f = open('file', 'w')
print('aaaa', file=f)  # 可以指定打印的文件位置
f.close()

  print()代码小练习——打印进度条

import time
for i in range(0,101,2):
    time.sleep(0.1)
    num = i//2  # \r可以使输出时的光标一直定位在首位
    str = '\r进度%s%% : %s\n'% (i,'*'*num) if i==100 else '\r进度%s%% : %s'% (i,'*'*num)
    print(str,end='',flush=True)

字符串类型的代码执行:exec()、eval()、compile()

  exec()可以执行()内的字符串python语句,没有返回值

print(exec('1+2'))  # 没有返回值,输出None
exec("print('haohao')")  # 输出haohao

  eval()和exec()一样可以执行字符串语句,不同点是有返回值

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

    注意:eval只能用在明确执行的代码是什么的时候使用,不安全,exec适合简单流程控制,eval适合有结果的简单运算

  compile()编译,对字符串的代码进行编译,然后用eval或exec执行

    compile(source,filename,model),source参数可以传递一些想要执行的变量或字符串;filename参数是代码文件名称,在source参数传递时可以写空字符;model是指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。

c1 = compile('for i in range(10):print(i)', '', 'exec')  # 简单流程控制语句
exec(c1)
c2 = compile('1+2+3+4', '', 'eval')  # 简单运算,有返回值
print(eval(c2))
c3 = compile('user_input = input("请输入:")', '','single')
exec(c3)
print(user_input)  # 编译前没有变量user_input,用户输入后就有了

数字相关

  复数complex() 复数无法比较大小

  浮点数(有限小数或无限循环小数)不是小数(比浮点数多一个无限不循环小数)

 进制转换:bin()、oct()、hex()

  bin(o) o指变量,将o转换为二进制

  oct(o) o指变量,将o转换为八进制

  hex(o) o指变量,将o转换为十六进制

 数学运算

  abs() 取绝对值

  divmod(a,b) 接收两个参数a,b(被除数,除数),返回两个参数( 商,余)

  round() 精确到几位小数,会四舍五入 eg:(3.145,2)

  pow() 求幂运算 (2,3) 即2的3次方 ,(2,3,3) 即2的3次方对3取余

  sum() 接收可迭代类型参数求和 eg:sum([1,2],10) 即对1和2求和,从10开始相加,结果为13

  min() 求参数中的最小值,可以分开接收参数,也可以接收可迭代类型的参数,min函数里的key可以设定min中参数先执行的函数

print(min(-1, 2, 3, -4, key=abs))  # 先对min里的参数进行取绝对值再比较大小,但返回结果是原来的参数

  max() 用法同min(),求参数中的最大值

 ps:面试题小知识补充

  字符串可以比较大小,但只是比较首字母的ascii码

  元组不能比较大小

  在面试题时要注意:可以通过print 后有没有()判断是python2还是3

  可迭代类型取值方法:next()、for()、数据类型的强制转换

l=range(100)
list(l[0:3])# 取第一到第三个元素,可迭代类型可以通过数据类型强制转换进行切片操作
l1=list(l[:])  # 取出所有元素

  判断dict中有没有某个key,用in/get

  is和==区别 :is是比较内存地址,==是比较值

  默认参数的陷阱面试题

def func(a, l=[]):  # 本题除了考察默认参数之外还主要考察了python中变量的赋值是赋予了变量地址
    l.append(a)
    return l
l1 = func(10)
l2 = func('1234',[])
l3 = func('a')
print(l1)
print(l2)
print(l3)
面试题

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!