• 【Python】Java程序员学习Python(四)— 内置方法和内置变量


      《假如爱有天意》

      当天边那颗星出现,你可知我又开始想念,有多少爱恋只能遥遥相望,就像月光洒向海面,年少的我们曾以为,相爱的人就能到永远,当我们相信情到深处在一起,听不见风中的叹息,谁知道爱是什么,短暂的相遇却念念不忘,用尽一生的时间,竟学不会遗忘,如今我们已天各一方,生活的像周围人一样,眼前人给我最信任的依赖,但愿你被温柔对待,多少恍惚的时候,仿佛看见你在人海川流,隐约中你已浮现,一转眼又不见,短暂的相遇却念念不忘,多少恍惚的时候,仿佛看见你在人海川流,隐约中你已浮现,一转眼又不见,当天边那颗星出现,你可知我又开始想念,有多少爱恋今生无处安放,冥冥中什么已改变,月光如春风拂面。

      最想听又不敢听的一首歌。

    一、Python的全局函数

      全局函数这一点和js比较像,用起来很方便,不需要引入额外的模块,直接就可以使用它的方法。

    二、全局方法详解

      Python的全局方法有很多,详见官网文档:https://docs.python.org/3/library/functions.html。有些方法用的很频繁,需要记住用法,有些方法不经常用,大致有个印象就可以了,等到想用的时候再去找,不至于自己重新实现,下面是全局函数列表:

      全局函数  
    abs():求绝对值
    dict():创建字典对象 help():调用内置帮助系统 min():求最小值 setattr():设置对象某个属性的值
    all():判断是否为空或所有元素为True dir():返回对象列表 hex():整数转成16进制字符串 next():返回迭代器下一个元素 slice():返回一个slice对象
    any():判断是否有一个元素为True divmod():求除数 id():返回对象的标识 object():返回一个新的无特征的对象 sorted():排序
    ascii():返回转义后的字符串 enumerate():返回枚举对象 input():获得输入内容 oct():整数转八进制字符串 staticmethod():返回function的一个静态方法
    bin():整数转二进制字符串 eval():执行代码 int():字符串转int open():打开一个文件 str():返回object的str版本
    bool():返回boolean值 exec():动态执行Python代码 isinstance():判断是否是指定类型 ord():字符转Unicode sum():求和
    bytearray():返回新的字节数组 filter():过滤元素 issubclass():判断是否是其子类 pow():求一个数的几次方 super():返回一个代理对象
    bytes():返回一个字节对象 float():字符串转换float iter():返回一个迭代器对象 print():打印 tuple():返回一个tuple
    callable():判断是否是可调用的 format():格式化 len():返回对象长度(元素个数) property():返回一个property 属性 type():返回对象的类型
    chr():返回Unicode表示的字符串 frozenset():返回frozenset对象 list():返回list range():返回区间 vars():返回对象的__dict__属性
    classmethod():将函数包装成类方法 getattr():获得对象指定属性的值 locals():更新和返回当前局部符号表的dict repr():返回对象字符串表示 zip():创建一个迭代器
    compile():编译代码对象 globals():返回全局符号的dict map():把迭代器每一个对象的应用指定方法 reversed():返回一个反向iterator __import__():不建议使用的方法
    complex():解析复数 hasattr():判断对象是否有属性 max():求最大值 round():返回一个浮点型 近似值  
    delattr():删除对应属性 hash():返回对象的hash值 memoryview():返回给定参数的“内存视图” set():返回一个新的set 对象  

      首先熟知几个最常用的。

    2.1 print()

      这个方法可以说最常用了,和Java的System.out.println()一样经典,用来在控制台打印输出的,当然实际生产的时候还是要用日志框架的。

    print(12)
    print('abc')
    print('hello','world')

      控制台输出:

    12
    abc
    hello world

      用来立即显示结果给人看滴。

    2.2 input()

      这个方法我觉得应该定义为初学者方法,用来在请求用户输入数据的,初学某个语言的时候用的比较多,实际生产的时候基本不用,需要的变量基本都会去读配置文件:

    name=input();
    print('hello',name)

      运行的时候会停住,等待用户输入,输入yiwangzhibujian,就会打印出hello语句,控制台输入输出如下:

    yiwangzhibujian
    hello yiwangzhibujian

      注意:input接收的都是字符串,即便输入的是1,如果需要数字还要进行转换。

    2.3 int()/float()

      这两个方法用的也比较多,就是将字符串转换成整型或者浮点型的方法。

    num=int('10')
    print(num+1)

      字符串和数字相加是会报错的,所以需要转换。

    2.4 isinstance()

      这个方法在定义方法的时候用的比较多,因为Python定义变量的时候不会指定类型,但是用错了类型还是会报错的,所以可以使用这方法来判断变量的类型:

    x=123
    isNum=isinstance(x, int)
    print(isNum)

      如果想要定义一个强壮的函数,还是需要多多使用这个方法的。如果想判断属于多个类型中的一个,可以传入一个tuple:

    x=123
    isNum=isinstance(x, (int,float))
    print(isNum)

      这样,当类型输入其中一种时将会返回True。

    2.5 len()

      这个方法用来返回一个对象元素的个数,或者集合元素的个数,文档解释也很清楚

    Return the length (the number of items) of an object. The argument may be a sequence (such as a string, bytes, tuple, list, or range) or a collection (such as a dictionary, set, or frozen set).

      最常用的已经介绍完了,其他的全局方法可以都去熟悉一遍,等用到的时候再去查看详细定义也是可以的。

    2.6 dir()

      初学用不到,但是中级开发者用的比较多,不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。简单例子如下:

    name='yiwangzhibujian'
    def hello():
        print(name)
    print(dir())
    =======控制台输出=======
    ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'hello', 'name']

      可以看出dir()方法将当前范围的方法和属性都输出来,这样根据名字可以大致知道用法,再结合注释和测试就可以快速熟悉一个模块。比如常见的sys系统模块:

    import sys
    print(dir(sys))
    =======控制台输出========
    ['__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_enablelegacywindowsfsencoding', '_getframe', '_home', '_mercurial', '_xoptions', 'api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_wrapper', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'set_asyncgen_hooks', 'set_coroutine_wrapper', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions', 'winver']

      是不是可以看到好多方法,这都是可以使用的。至于用法可以查看文档或者百度,当然百度更快一些。

    2.7 help()

      这个函数主要用来获得帮助滴,使用方法是:

    • help():获得Python的帮助
    • help(‘模块名’):获得模块名的帮助
    • help(‘模块名.方法名’):获得模块下某个方法的帮助

      在对一个模块或者方法不了解的情况下,多使用help还是有必要的。

    三、全局变量

      Python中同样有一些全局变量。现在还没有接触,后续会补上。

    3.1 __name__

      两个双下划线中间带有一个name。这是一个Python脚本的全局变量,当执行该脚本的时候,__name__值等于__main__,当引入该脚本的时候,该脚本就是脚本的名称(不带后缀名,py),例如定义一个test.py的脚本并执行:

    print(__name__)
    =====控制台输出=======
    __main__

      但是当另一个脚本引入该脚本的时候,比如新建另一个test2.py,引入刚才新建的脚本(先记得引入一个脚本的时候会执行该脚本):

    import test
    ========控制台输出=======
    test

      这个的一个用途就是,方便测试,且别的脚本引入时不会执行:

    def isNull(string):
        if string is None:
            return True
        if len(string.strip())==0:
            return True
        return False
    
    if __name__ =='__main__':
        print(isNull(None))
        print(isNull('abc'))
        print(isNull(' '))

      如果没有__name__的话,测试完就要注释掉测试代码,不然别的脚本引入你的脚本就会又执行一遍测试代码,当然规范一点的做法还是写专门的测试脚本。

  • 相关阅读:
    17岁韩寒在CCTV《对话》舌战群吊的视频
    在线LaTex编辑器
    PowerShell 点滴记录
    程序阅读理解题目(高中语文版,附答案)
    jQuery Validate 应用
    ASP.net MVC 向子视图传递数据
    分库分表(sharding)后主键全局唯一性的解决方案
    Ajax局部刷新例子
    限制 Flash 在指定域名/网址中播放 (Flash 防盗链)
    javascript实现二级联动下拉框
  • 原文地址:https://www.cnblogs.com/yiwangzhibujian/p/6984509.html
Copyright © 2020-2023  润新知