zoukankan      html  css  js  c++  java
  • 2.1、字典、表达式和语句(0530)

    在python中,当需要给定一个数值时,直接写出一个数值即可,不需要加单双引号或者花括号;

    同时python中规定变量名不能以数值开头,所以在给定一个标识的时候,只要不加引号,那么这个标识要是是数值,要么是变量名;

    因为变量名不能以数值开头,同时python中的字符串都是需要加引号的。

     类:数据 + 方法

    实例:

    实例在初始化时,类必须要实例为对象,在初始化时由初始化过程来做赋值,因此类必须实例化成对象;

    这些实例对象其内部的数据不同,所以它们才成为不同的实例;

    对实例内部的数据可以执行某些类型的操作,这些操作只能是附加在这些实例上的操作,这些操作是由类在内部定义的,所以方法可以理解成实例调用接口或支持的操作。

    任何一种内置的对象或数据类型在实例化出来其对象时,这个对象就决定了其所能够支持的操作。

    比如计算3 + 5 ,就相当于对3调用内置的方法3.__add__(5),因此任何一种对象所支持的操作,是属于这个对象所属类型的所支持的方法,如果类型不支持这种方法,则对象一定不支持这种操作。

     列表和字典最为常用,是可变对象;

    变量名和对象在内存中各存储一个位置,变量名是指向对象的引用,所以在python中变量名没有类型,对象才有类型;

    点号运算符:.   对于对象而言有两重功用(属性、方法)

    • 属性:数据 --> 在实例内部定义的所属于这个实例特定的变量名,变量名通常要指定一个对象,所以属性通常指向一个数据
    • 返回一个数据,显示则要使用print语句
    • 方法:操作()
    • 调用:执行一段代码

    可调用对象:callable()      函数、类、对象中的方法

    函数名也是一种变量名,可以直接调用。在python内部,函数也是一种对象,属于可调用对象,在引用这个对象时,通常使用函数名进行的。

    函数名也是标识,这段标识也指向了内存的一段空间, 在内存它存的是函数体:print "hello"

    变量名不能以数字开头,变量名不加引号,但是字符串必须加引号

    list.reverse原处逆序,不会返回任何结果

     

    如何获取使用帮助:

    获取对象支持使用的属性和方法:dir()

    某方法的具体使用帮助:help(list.pop)

    获取可调用对象的文档字串:print obj.__doc__

     

    支持对象支持使用的属性和方法:dir()

    查看某方法的具体帮助:help()

    获取可调用对象的文档字串:print obj.__doc__


    集合:一组无序排列的可哈希的值

    支持集合关系测试:比如判断集合之间的关系

    成员关系测试:in、not in、迭代

    不支持:索引、元素获取操作,切片

    集合类型:set(),fronzenset()  

    注意:集合没有特定语法格式,只能通过工厂函数(set,fronzenset)创建;

    set    必须是可迭代对象

    支持迭代,所以内部 set() 要给出的是一个可迭代对象


    集合类型的方法和操作

    集合操作

    pop

    update

    add

    fronzenset


    容器、类型、对象

    1.列表,元素,字典字面量可以跨行定义,最后一个允许使用逗号,但空是不允许使用逗号的

    2.所有对象都有引用计数,可以使用sys.getrefcount查看引用次数,使用del删除一个计数引用

     

    3.列表、字典都支持浅复制和深复制:深复制的方法可以使用 copy 模块中的 deepcopy() 实现

    浅复制:创建一个新对象,但是包含的则是 对原始对象所包含项的引用,因此指向同一个位置

    深复制:创建一个新对象,并且递归复制它所包含的所有对象

    4.python中的所有对象都是“第一类的”,“第一类”对象意味着使用标识符命名的所有对象具有相同状态,于是,能够命名所有对象都可以直接当数据进行处理

    5.所有序列(序列是其索引为非负整数的有序对象的集合)都支持迭代

    6.所有序列都支持的操作和方法:

    s[i]、s[i:j]、s[i:j:stride]、len(s)、max(S)、sum(s)、all(S)、any(s)

    s1 + s2  连接

    s1 * n  重复

    obj in s1  成员关系判断

    obj not in s1

    7.可变序列的操作

    s1[index] = value:元素赋值

    s1[i:j] =t :   切片赋值 ( t 是一个序列也可以是单个值)

    del s1[index]:删除元素

    del s1[i:j]       删除切片

    del s1[i:j:stride]    删除扩展切片


    python的表达式和语句

    表达式: 是由一个或多个操作数,以及加上零个或以上的操作符组成的序列,比如 (1+2)

    语句:用来实现的操作:声明变量、变量赋值、调用函数方法、循环访问、条件判断

     

    python中的常用的表达式操作符:

    1、算术运算

    x * y ,x /y ,x+y,x-y,x//y,x%y

    2、逻辑运算:

    x or y, x and y, not x

    3、成员关系运算:

    x in y , x noy in y

    4、对象实例测试

    x is y ,x not is y

    5、比较运算:

    x < y,x > y, x <= y,x >= y,x == y,x != y

    6、位运算:

    x | y ,x & y, x ^ y, x << y,x >> y

    7、一元运算:

    -x,+x, ~x

    8、幂运算:

    x ** y

    9、索引和分片

    x[i],x[i:j],x[i:j:stride]

    10、调用

    x(....)

    11、取属性:

    x.attribute

    12、元组:(....)

    13、序列:[...]

    14、字典:{...}

    15、三元选择表达式:x if y else z

    16、匿名函数: lambda args:expression

    17、生成器函数发送协议: yield x


    运算优先级:(由高到低)

    (....),[....],{.....}

    s[i],s[i:j]

    s.attribute

    s(....)      //函数调用

    +x,-x,~x

    x**y

    * ,/, //, %

    +,—

    <<, >>

    &

    ^

    |

    <, <=, >, >=, ==, !=


    对象实力测试优先级

    • is not is
    • in not in
    • not
    • and
    • or
    • lambda

    语句:

    • 赋值语句:创建引用
    • 调用(函数和方法)
    • print:打印对象
    • if/elif/else:条件判断
    • for/else:序列迭代
    • while/else:普通循环
    • pass:占位符
    • break:
    • continue:
    • def:定义函数
    • return:返回值
    • yield:生成器函数
    • global:命名空间
    • raise:(手动)触发异常
    • import:导入
    • from:模块属性访问
    • class:类
    • try/except/finally:捕获异常
    • del:删除引用
    • assert:调试检查
    • with/as:环境管理器

    赋值语句:

    • 隐式赋值:import,from,def,class,for,函数参数
    • 元组和列表分解赋值,当赋值符号(=)的左侧为元组或列表式,python会按照位置把右边的对象和左边的目标自左向右逐一进行配对,个数不同时会出异常,此时可以进行切片处理。

     

    • 多重目标赋值

     

    • 增强赋值:+=,-=,*=,/=,//=,%=

     

  • 相关阅读:
    Python randrange() 函数
    200行Python代码实现2048
    select默认下拉箭头改变、option样式清除
    图片垂直居中
    去除select边框和三角-----appearance:none
    原生 js 实现点击按钮复制文本
    This dependency was not found: * !!vue-style-loader!css-loader?……解决方案
    vue项目启动时将localhost替换成指定ip地址
    安装cnpm
    vue 项目要使用的库
  • 原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/9333165.html
Copyright © 2011-2022 走看看