• Python基础语法


    本节内容:

    • 常量/变量
    • 运算符和表达式
    • 程序控制结构

    一、常量/变量

    • 常量:python中没有真正的常量的,所有东西你都可以重新给它赋值的。但是有字面常量。比如:1,'a',这些就是字面常量。单独出现的字面常量无意义。字面常量是一块内存。
    • 变量:在python中,所有的变量都是一个引用。变量是一个指针,它指向一块内存。就是一个名字,指向了一块内存。C语言里有不是指针的变量的。指针是在堆内存上的,非指针是在栈内存上的。

    【注意】:在python中所有的变量都是有类型的。python是强类型的动态语言。

    强类型,比如:

    动态语言:

    变量的命名规则:
    • 1、只能包含字母、数字和下划线; (这里的字母是Unicode字符串,当然可以是中文,但是最好不要用,没人去维护这种代码的)
    • 2、只能以字母或者下划线开始;
    • 3、不能是Python解释器的保留字。

    补充:

    什么是强类型和弱类型?

    强类型,如果一门语言很少隐式转换类型,说明它是强类型语言;如果经常这么做,说明它是弱类型语言。Java、C++和Python是强类型语言。PHP、JavaScript和Perl是弱类型语言。

    什么是动态语言和静态语言?

    在编译时检查类型的语言是静态类型语言,在运行时检查类型的语言是动态类型语言。静态语言需要声明类型,也就是说在编码时要声明数据类型。 

    动态类型语言:指在运行期间才去做数据类型检查,也就是说,用动态语言编程时,永远不用去给任何变量去指定数据类型。该语言会在你第一次给该变量赋值的时候,在内部把数据类型记录下来。ruby或者Python是典型的动态类型的语言,一些脚本语言也多少属于动态类型语言。 

    什么是解释型语言和编译型语言?

    编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。
    解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!
    java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后运行时,BYTECODE由JVM逐条解释执行。

    二、运算符和表达式

    • 算术运算符
    • 逻辑运算符
    • 比较运算符
    • 位运算符
    • 其他运算符: 包括赋值、成员运算、身份运算等。

    1. 算数运算符

    算术运算符通常只针对数值类型。Python中数值类型有3种:整型、浮点型、复数。后面会讲到。加减乘除和数学里都一样的,但是注意在通常的编程语言里,除法都是取整的,但是python3中的除法是能得到小数的,它与数学里的除法更类似一点。在python2中得到的是整数。

     

    上面这个除是"自然除",自然除的结果都是浮点数。取整除的结果都是整数。

     

    在python3中取整除用//

     

     

    2. 比较运算符
    • == 相等
    • != 不等于
    • > 大于
    • >= 大于等于
    • < 小于
    • <= 小于等于

    所有的运算符返回的都是boolean值,也就是true或者false。

    3. 逻辑运算符 

    python里面逻辑运算只有3个,与、或、非

    • 与:and
    • 或:or
    • 非:not
    参与运算的成员只能是bool类型的,或者可以隐式转化为bool类型的类型。bool类型的只有True和False。

    and操作需要两边都是True才可为True。

    or运算符两边只要有一个是True就是True。

    not操作就是取反。

    and和or需要两个操作数,属于双目运算符,而not属于单目运算符。python的双目运算符是短路操作。总是从左到右计算,如果一旦能够决定表达式最终的值,将立刻停止计算并返回。

    4. 位运算符

    用的很少

    位运算符需要先得到那个数值或者字符的二进制表示,是可以计算出来的。比如计算60的二进制表示,如下。也可以用8位来表示0011 1100。再计算一个12,是0000 1100。也可以把二进制转换为相应的类型。

    按位与:

    0011 1100
    0000 1100
    0000 1100

    其他几个操作:

     
    左移和右移:
    • 左移,右边缺的补0。
    • 右移,左边缺的补0。
     
    5. 其他运算符
    • 赋值:左边是一个标识符,右边是一个值(或者可以计算为一个值),让这个标识符指向这个值所在的内存。
    • 成员运算符:in   ——内置数据结构
    • 身份运算符:is   ——面向对象的时候在讲

    6. 运算符的优先级

    算术运算符的优先级和正常的一样,但是有1个要注意:幂乘法优先级比乘法高。

    算术运算符的优先级高于比较运算符。

    比较运算符的优先级高于逻辑运算符。

    拿不准的时候直接用括号,逻辑看起来也清晰。

    7. 表达式

    常量/变量和运算符组成

    三、程序控制结构

    所有的程序都差不多是以下3种控制结构:
    • 顺序结构
    • 分支结构
    • 循环结构

    1. 顺序结构

    自上而下往下执行。

    2. 分支结构

    单分支结构:
    if cond:
        block
    

    if 1<2 做了一个隐式转换,调用bool()函数,bool(1<2)。有人说为什么0是False,非0是True呢?

    所以有一个规则,0、空的内置结构、None,bool运算的结果都是False,非空的内置结构都是True。
     
     

    双分支结构:

    if cond:
        true_block
    else:
        false_block
    

      

    多分支结构:

    if cond1:
        block1
    elif cond2:
        block2
    elif cond3:
        block3
    ....
    else:          #默认该分支可有可无
        default block
    

      

    分支结构永远只有一个分支会被执行。

    【注意】:如果某个语句块里不需要有内容的话,可以使用pass,pass就是个占位符。

    3. 循环结构

    while循环

    while cond:
        block
    

      

    for循环:

    for element in itratable:       #itratable是可迭代对象,for...in...是遍历,不是单独使用的
        block
    

      

    【注意】:for循环的循环体中绝对不要修改可迭代对象。

    4. 嵌套的控制结构

    【示例】:求素数

    素数,又称质数,除了1和它本身外不再有其他因数的数。规定,1不是素数。

    绝大多数语言都是要加一个计数器来判断循环执行了多少次,但是python有独特的写法:

    【注意】:循环结构中,else子句判断循环有没有提前退出。如果提前退出了,else子句不执行,如果没有提前退出,执行else子句。
     

    注意比较下面两个例子,return无论在函数里还是在循环里,只要return了,下面的语句将不会被执行。还要注意True和False,首字母要大写。

    【例2】:跳出多重循环。

  • 相关阅读:
    Dan Gillmor总结微软付费平息纠纷历史
    从一份GIS试题谈GIS开发人员的技能和招聘
    转载:赵勖予,废旧电脑配件的新用法next
    百度败诉MP3搜索遭封杀
    给人也装一个中断系统
    ArcGIS Server 9.2的一些新特征
    基于MA和CA的交通空间决策模型
    Modeling Our World 读书笔记
    卸载了NewsGator,开始使用Gougou
    OpenOffice.org 2.0即将发布
  • 原文地址:https://www.cnblogs.com/zhaojiankai/p/8944466.html
Copyright © 2020-2023  润新知