• python学习笔记 day15 内置函数


    内置函数

    locals() ---查看本地作用域中的变量;

    globals()----查看全局作用域中的变量;

    def func():
        a,b=1,2
        print(locals())   #查看本地(在函数内部,本地自然就是局部命名空间)作用域中的变量
        return "哈哈哈"
    ret=func()
    print(locals())       #查看本地(在全局作用域中本地自然就是全局命名空间)作用域中的变量,此位置的locals()和globals()效果是一样的
    print(globals())      #查看全局作用域中的变量

    运行结果:

    iter() 方法 和 next()方法

    __iter__()-----具有该方法的都是可迭代对象,都可以被for循环,iterable.__iter__()就会变成迭代器(iterator):iterable.__iter__() 等价于iter(iterable)

    __next__()----同时具有__next__()方法和__iter__()方法的都是迭代器 :iterator.__next__() 等价于 next(iterator)

    range()函数:

    range(10)是一个可迭代的对象,但是不是迭代器:

    print('__iter__' in dir(range(10)))   #使用__iter__()方法来判断一个数据类型是否为可迭代对象
    print('__next__'in dir(range(1)) and '__iter__' in dir(range(1)))  # 使用__iter__()方法和__next__()方法判断一个数据类型是否为迭代器

    运行结果:

     callable():判断一个变量是否可以被调用(因为函数名也是一个变量)

    def func():
        pass
    a=1
    print(callable(func))
    print(callable(a))

    运行结果:

    help() :可以查看相关的帮助信息

    help(str)

    运行结果:

     import:导入模块和包用的

    例如之前的导入可以计算时间的模块:

    import time
    print(time.time())

    运行结果:

    open():打开一个文件

    with open('info',mode='r',encoding='utf-8') as file:
        content=file.readlines()
        print(content)

    运行结果:

     dir():可以查看某一个数据类型的方法---结果返回一个list

    print(dir([]))   #查看list列表数据类型的方法,返回一个list
    print(dir(str))

    运行结果:

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

    a=123
    b='hello,python'
    print(id(a))
    print(id(b))

    运行结果:

     hash(): 返回一个可哈希数据的哈希值

    不可变数据类型(比如字符串,元组,int类型,字典的key)等都是可哈希的,而可变数据类型比如list,dict就是不可哈希的:

    print(hash(int))   #int不可变数据类型是可哈希的
    print(hash(set))   #set不可变数据类型是可哈希的
    print(hash((1,2,3)))  #tuple不可变数据类型是可哈希的
    print(hash('hello,python'))  #str不可变数据类型是可哈希的

    可哈希的数据类型使用hash()函数会返回一个哈希值,这个哈希值是与地址相关的,比如字典的key必须要求是可哈希的,就是字典根据key查找value的时候,其实是把这个key对应的value存到key的哈希值对应的内存地址上,下一次根据key查找这个value时就会直接查找hash(key)这个哈希值对应的内存地址,一下就找到啦

    再来看可变数据类型不可哈希的情况:

    print(hash({'a':1}))
    print(hash([1,2,3]))

    运行结果:

    imput() :可供用户输入,返回的是str数据类型

    a=input(">>>")
    print(a)

    运行结果:

    print():用户输出内容到屏幕

    print('123')
    print(89045)

    运行结果:

    你看输出的结果为什么会换行呢,我结尾又没有设置' ' 我们来看一下:

    也就是end=' '默认就是会自动换行的,可以修改end默认参数的值,来控制末尾是否换行,还是紧挨着同一行输出

    我们可以修改end关键字参数的值就好了:

    print('123',end='')
    print(8349,end='')
    print("哈哈哈哈")

    运行结果:

    再来看一个有趣的现象:

    print(1,2,3,4)

    当我们输出结果的时候是这样的:

    再看上面print()方法那里 sep是设置输出结果之间的分隔符的,默认是空格,我们也可以修改sep的值作相应的变化:

    print(1,2,3,4,sep='*')

    运行结果:

     print()函数中的file参数

    print的内容会输出到屏幕上,其实也是一个文件,只不过这个文件在写入或者输出内容时可以被我们看到,其实我们也可以修改file默认参数的值,来完成一些别的功能:

    f=open('info',mode='w',encdoing='utf-8')
    print("hello,xuanxuan",file=f)
    f.close()

    运行结果:

    屏幕上什么也没有,就是print函数通过file关键字参数,把内容‘aaa’写道文件f(info)中去啦:我们来看一下info文件中的内容:

    print()函数的参数说明: 

    end=‘ ’:输出内容末尾 有换行,可以设置为end=‘’ 不换行,接着打印;

    sep=' ':默认打印多个值时的分隔符,默认是空格,当然可以设置为sep='*'或者其他分隔符;

    file=None:默认输出内容到屏幕,如果参数值设置为文件句柄,则打印内容到文件,屏幕不再显示;

    flush='True' :就是打印内容立即输出到流文件,不做缓存;

     最后来看一个关于print()函数的例子(Eva-J):

    import time
    def func():
        for i in range(0,101,2):
            time.sleep(0.1)
            num=i//2  #有多个※显示
            content='
    %d%%: %s'%(i,'*'*num)
            print(content,end='',flush='True')
    func()

    版本二(Eva-J)

    import time
    def func():
        for i in range(0,101,2):
            time.sleep(0.1)
            char_num=i//2
            content='
     %d %%: %s
    '%(i,'*'*char_num) if i==100 else '
     %d %% : %s'%(i,'*'*char_num)  #三元运算符,
    是每次从开头开始
            print(content,end='',flush='True')  #flush关键字为True 是冲刷掉之前的内容,相当于覆盖??
    func()
    print("您的假期已经结束啦")

    可以试一下,打印进度条的效果~

    talk is cheap,show me the code
  • 相关阅读:
    TLPI读书笔记第15章-文件属性2
    TLPI读书笔记第15章-文件属性1
    Java异常及错误
    10055
    4月。
    JavaScript三种方法获取地址栏参数的方法
    页面预加载loading动画,再载入内容
    什么是可串行化MVCC
    简化版扫雷详细解
    论unity中UI工具与GUI函数
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9594494.html
Copyright © 2020-2023  润新知