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]
时间: 2024-10-13 12:18:16

Python3 学习第十二弹: 补充something的相关文章

Python3 学习第十二弹: 模块学习五之pickle与json

对于python来说,这两个模块是十分实用的两个模块,以一种简单的方法用于储存数据实例. pickle模块 提供用来储存Python各种数据序列化存储 # 原来的cPickle已经在python3中与pickle合并 dumps(obj) 返回对象信息存储成的二进制字符串 loads(str) 返回二进制字符串的对象信息 dump(obj, file) 将对象信息写入到二进制文件中,包括基本数据结构,函数实例,类实例 load(file) 从二进制文件中读入一个储存的对象,顺序与写入的顺序相同

从零开始学习PYTHON3讲义(十二)画一颗心送给你

(内容需要,本讲使用了大量在线公式,如果因为转帖网站不支持公式无法显示的情况,欢迎访问原始博客.) <从零开始PYTHON3>第十二讲 上一节课我们主要讲解了数值计算和符号计算.数值计算的结果,很常用的目的之一就是用于绘制图像,从图像中寻找公式的更多内在规律. Python科学绘图 科学绘图是计算机图形学的一个重要分支.同其它绘图方式相比,更简单易用,能让使用者把工作的主要精力集注在公式和算法上而不是绘图本身.此外科学绘图的工具包普遍精度更高,数据.图的对应关系准确,从而保证基于图的研究工作顺

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

#HTTP协议学习# (十二)理解转发与重定向

本文转自:http://blog.csdn.net/meiyalei/article/details/2129120  生动清晰 解释一 转发是服务器行为,重定向是客户端行为.为什么这样说呢,这就要看两个动作的工作流程: 转发过程:客户浏览器发送http请求---->web服务器接受此请求-->调用内部的一个方法在容器内部完成请求处理和转发动作---->将目标资源发送给客户:在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的r

hbase 学习(十二)集群间备份原理

集群建备份,它是master/slaves结构式的备份,由master推送,这样更容易跟踪现在备份到哪里了,况且region server是都有自己的WAL 和HLog日志,它就像mysql的主从备份结构一样,只有一个日志来跟踪.一个master集群可以向多个slave集群推送,收到推送的集群会覆盖它本地的edits日志. 这个备份操作是异步的,这意味着,有时候他们的连接可能是断开的,master的变化不会马上反应到slave当中.备份个格式在设计上是和mysql的statement-based

虚拟机VMWare学习笔记十二 - 将物理机抓取成虚拟机

1. 安装VMware vCenter Converter Standalone Client 运行虚拟机,File -- Virtualize a Physical Machine 这时如果电脑中没有VMware vCenter Converter Standalone Client ,则会进行安装. 安装过程 之后图标会出现在桌面上,双击运行 选择连接到本地服务器,登陆 点击转换计算机 这个,可以将本地计算机抓取成虚拟机,也可以将其他可以访问的计算机(需知道管理员用户名及密码)抓取成虚拟机.

javascript基础学习(十二)

javascript之BOM 学习要点: 屏幕对象 History对象 Location对象 一.屏幕对象 Screen对象是一个由javascript自动创建的对象,该对象的主要作用是描述客户端的显示器的信息. 目前显示器分辨率为800X600或1024X768两种. screen.height:屏幕的高度 screen.width:屏幕的宽度 screen.availHeigh:屏幕的有效高度 screen.availWidth:屏幕的有效宽度 二.History对象 History对象可以

JavaScript学习总结(十二)——JavaScript编写类

在工作中经常用到JavaScript,今天总结一下JavaScript编写类的几种写法以及这几种写法的优缺点,关于JavaScript编写类的方式,在网上看到很多,而且每个人的写法都不太一样,经常看到的就是以下几种方式. 1.构造函数方式 用构造函数模拟"类",在其内部用this关键字指代实例对象. 基本语法: function 类名(){     this.属性名;//公共属性     var 属性名;//私有属性    /*凡是定义类的公共属性和公共方法都要使用this*/   

Mysql学习之十二:JDBC连接数据库之DriverManager方法

JDBC连接数据库 ?创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ Sy