zoukankan      html  css  js  c++  java
  • Python3 学习第十二弹: 补充something

    python中遇到 *keys, **keys的形式

    其实 
        * 代表传递任意个无名字参数,这些参数通过Tuple访问
        >>> def sum(*keys):
            ret= 0
            for i in keys:
                ret += i
            return ret
        >>> sum(1,2,3,4,5)
        15
    
        ** 代表传递人一个有名字参数,这些参数通过dict访问
        >>> def sum(**keys):
            ret= 0
            for i,j in keys.items():
                ret += j
            return ret
        >>> sum(a=1,b=2)
        3

    一些特殊函数

    pass 程序什么都不用做
        用的地方不多,比如
        if age < 10:
            print('children')
        elif age < 20:
            pass
        elif age < 30:
            print('adult')
    
    del python一般会删除那些不用的对象
        比如列表与字典中删除时
        此外,del会删除该值的引用
        >>> a = 1
        >>> b = a
        >>> del a
        >>> b
        1
        >>> a
        NameError: name 'a' is not defined
        要注意的是,a虽然会被删除,但是引用b不会被删除,也就是其值实际上没有删除,只是删除了引用a。python实际上是无法删除值的,不过当某个值不再被引用时,python会自动负责内存的回收的。
    
    exec 将字符串当作python语句进行运行
        使用必须慎之又慎
        >>> exec("print('Mathics')")
        Mathics
        exec与import比较相当于直接将代码复制到exec这个地方,可能会覆盖原来的变量,而import一般都会有自己的命名空间,exec具有潜在的破坏性。
        通常的解决方法是将exec中的代码放在字典中,字典相当于起到名字空间作用
        >>> from math import sqrt
        >>> scope = {}
        >>> exec('sqrt = 1', scope) #将语句在scope域中执行
        >>> sqrt(4)
        2.0
        >>> scope['sqrt']
        1
    
    eval 将字符串作为表达式计算并且返回值
        >>>eval(input())
        1+2*3
        7
        >>>eval(input())
        if 1 < 2 : print('Yes')
        SyntaxError: invalid syntax
    
        eval不能运行语句
        相同的,eval也可以通过上述方法在命名空间中执行
    
    type 返回对象的类型
        更深入的,type可以创建一个新的类型,相当于创建一个class
        type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))
        返回该类
    
        >>> World = type('World', (), {'Land': 'Asia'}) # 直接当类使用
        >>> a = World()
        >>> a.Land
        'Asia'
        >>> World.Land
        'Asia'
    
        # 添加函数
        >>> def WhereIam(self):
                print(self.Land)
        >>> World = type('World', (), {'Land': 'Asia', 'WhereIam': WhereIam})
        >>> World.WhereIam()
        TypeError: WhereIam() missing 1 required positional argument: 'self'
        >>> a = World()
        >>> a.WhereIam()
        Asia
    
    
    isinstance(object, class or type or tuple) 判断object是否为对应类型
        >>> isinstance(12,int)
        True
        >>> isinstance([1,2], list)
        True
        >>> isinstance((1,2), tuple)
        True
        >>> a = Person()
        >>> isinstance(a, Person)
        True

    python在函数式编程方面有一些有用的函数

    map(func, *iterable)
        >>> map(str, range(5))  # Equivalent to [str(i) for i in range(5)]
        ['0','1','2','3','4']
    
    filter(func, iterable) #过滤掉iterable中不符合func的值,返回剩下值得列表
        >>> def isnum(x):
                return type(x) == int
        >>> seq = ['abc', 12, 'z']
        >>> list(filter(isnum, seq))
        [12]
  • 相关阅读:
    HDFS体系结构
    HDFS核心设计
    1)HDFS分布式文件系统 2)HDFS核心设计 3 )HDFS体系结构
    大数据的特征
    zookeeper原理
    Hadoop安装手册
    微信公众号开发
    一、Ajax 二、JSON数据格式 三、Ajax+Jquery 四、分页的实现
    设计模式--工厂模式
    Spring MVC 配置文件设置全局编码
  • 原文地址:https://www.cnblogs.com/Mathics/p/4038938.html
Copyright © 2011-2022 走看看