zoukankan      html  css  js  c++  java
  • Python常用语法看这些就够了(上篇)

    参考教程:菜鸟教程

    https://www.runoob.com/python3/python3-tutorial.html

    使用的开发工具是Jupyter Notebook(Anaconda)

    下面我主要是介绍一些需要注意的点和练习过程:

    说在前面:动手很重要

    一、python基本语法

    1.标识符规则:

    在 Python 里,标识符由字母、数字、下划线组成。

    在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。

    Python 中的标识符是区分大小写的。

    注意:

    以下划线开头的标识符是有特殊意义的。

    单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。

    以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。

    2.行和缩进

    python中的代码块不适应大括号{ } 来控制类、函数以及其他逻辑判断。python对缩进是很敏感的,它通过缩进来判断函数或者模块。

    if True:
        print("true")
    else:
        print("false")

    若出现: IndentationError: unindent does not match any outer indentation level错误表明是缩进错误

    3.多行语句在行尾使用  来接下一行

    句中包含 [], {} 或 () 括号就不需要使用多行连接符。

    4.字符串表示 ‘’,“”,“““,三引号可以由多行组成。单行注释用 #  多行注释用三个单引号或三个双引号。

    5.input、print表示输入、输出,python中的命令-h可以查看各参数的帮助信息。

    6.import 与 from...import

    二、Python变量类型

    1.变量赋值

    Python中变量名赋值不需要进行类型声明,变量名也不需要提前创建,变量赋值以后才会被创建(这一点和R语言类似)

    2.多变量赋值

    可以同时给三个变量赋相同的值,也可以将三个变量同时分别赋值。

    3.标准数据类型

    Python中有五个标准数据类型:Numbers(数字)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)

    详细内容看下面的第

    三、Python的基本数据类型

    用于存储数据

    1.Number数字

    Python3 支持 int、float、bool、complex(复数)

    (1)内置的 type() 函数可以用来查询变量所指的对象类型。

    (2)此外还可以用 isinstance 来判断

    (1)(2)的区别在于:

    (3)Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加

    (4)del语句可以删除一些对象引用。也可以删除单个或多个对象。

    (5)Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

    2.字符串

    Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 转义特殊字符。

    (1)字符串截取:

    变量[头下标:尾下标],字符串第一个字符索引是0;

    从左往右以0开始,从右往左以-1开始。

    (2)字符串操作

    注意不能使用索引来改变字符串内的字符。

    (3)对转义字符的说明

    反斜杠()转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:

    3.列表List(Python内还有一些对列表操作的函数)

    (1)列表是写在方括号 [] 之间、用逗号分隔开的元素列表, 列表中元素的类型可以不相同。

    (2)列表中元素的截取

    ①当只截取一个时,返回值是这个元素;当截取多个时,返回的是一个新的列表。

    ②注意选取范围是左闭右开区间

    索引值以 0 为开始值,-1 为从末尾的开始位置。

    可以直接通过索引来更改列表内元素,也可以通过列表内置方法来更改。

    ③注意:

    list可以用+进行拼接

    和字符串一样,list可以被索引和切片

    python截取列表数据时,可以接收第三个参数,实现按步数截取

    当第三个参数为负数时逆向读取,可以用来翻转字符串。

    4.元组Tuple

    (1)特点:操作元组与列表类似,不同之处在于,元组内的元组不能修改,元组写在小括号()里,元组之间用逗号隔开,元组内的元组类型也可以不同。元组之间也可以通过+直接合并。

    (2)虽然tuple的元素不可变,但是他可以包含可变的对象,比如说list列表。

    (3)特别注意:构造包含0或1个元素的元组有着特殊的语法规则

    5.集合set

    是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员

    基本功能是进行成员关系测试和删除重复元素set里的内容位置是随意的,所以不能用索引列出

    (1)set的创建

    ①可以使用大括号{}或者set()函数来创建

    ②在用set函数的时候,注意,set函数最多只能接收一个参数

    那么怎样用它来创建含有多个元素的集合呢?

        向set函数的参数里,传入含有多个元素的列表或元组均可;如果只传入一个字符串,他会将字符串拆成一个个的字符,那么创建的集合就全是一个个的字母的集合啦

    空的集合必须通过set()函数来创建;{}是用来创建空的字典的。

    (2)集合之间可以进行运算,差、交、并、补等

    (3)set的使用:

    ①去重,set自动完成

    ②判断元素是否在集合中

    6.字典dictionary(具体字典内置函数,可以百度一下)

    列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过来存取的,而不是通过偏移存取。

    (1)字典的实质:字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合

    (2)注意: 键(key)必须使用不可变类型, 在同一个字典中,键(key)必须是唯一的。

    (3)创建字典:三种方式对比

    创建空字典用{}。

    (4)对字典的读取操作

    7.Python数据转换

    下面介绍几个内置函数可以执行数据类型之间转换,这些函数返回一个新的对象值,表示转换的值。

    函数

    描述

    int(x)

    将x转化为一个整数

    float(x)

    将x转化为浮点数

    comlext(real,imag)

    创建复数

    str(x)

    将对象x转化为字符串

    repe(x)

    将对象x转化为表达式字符串

    tuple(s)

    将序列s转化为元组

    list(s)

    将序列s转化为列表

    set(s)

    将s转化为可变集合

    frozenset(s)

    转化为不可变集合

    dict(d)

    将d转化为字典;d必须是一个(key,value)的元组序列

    chr(x)

    将一个整数转化为字符

    ord(x)

    将一个字符转化为整数

    hex(x)

    将x转化为16进制形式字符串

    oct(x)

    转化为八进制形式字符串

    四、Python解释器

    现在Python的集成开发工具多种多样,我现在使用的是Jupyter notebook,网页版,高效方便。

    也可以使用python自带的IDE,有脚本编程和交互式编程两种。

    还有pycharm、Ipython等工具都很方便。

    五、Python运算符(这里只讲一些常用的)

    1.算术运算符

    运算符

    描述

    +,-,*,/ 

    加减乘除

    %

    取模,返回除法的余数

    x**y

    返回x的y次方结果

    //

    向下取接近除数的整数,9//2=4;-5//2=-3;得到的是更小的整数

    2.比较运算符(返回的是真值)

    运算符

    描述

    ==、!=

    等于、不等

    >、<、>=、<=

    大于、小于、大于等于、小于等于

    3.赋值运算符

    运算符

    描述

    =

    简单赋值符     c = a + b 将 a + b 的运算结果赋值为 c

    +=、-=、*=、/=

    加减乘除赋值符    c += a 等效于 c = c + a

    %=

    取模赋值符    c %= a 等效于 c = c % a

    **=

    幂赋值符   c **= a 等效于 c = c ** a

    //=

    取整除赋值符   c //= a 等效于 c = c// a

    :=

    海象运算符(和R语言中的有点类似)

    可在表达式内部为变量赋值。

    4.位运算符

    运算符

    描述

    &

    按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

    |

    按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。

    ^

    按位异或运算符:当两对应的二进位相异时,结果为1

    ~

    按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1

    <<

    左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

    >>

    右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

    5.逻辑运算符(看X的真值)

    运算符

    描述

    and

    与运算符:如果x为False,x and y 返回 False,否则返回y的计算值

    or

    或运算符:如果x是True,返回x的值,否则返回y的值

    not

    非运算符,如果x为True,则返回False,否则返回True

    6.成员运算符

    in、not in

    7.身份运算符(判断)

    is 判断两个标识符是否引用自同一个对象

    is not  判断两个标识符是否引自不同的对象

    8.Python运算符的优先级

    "**" > "~ +@ -@" > "*/%//" > "+-" > "<< >>"

    注意:python3已经不支持<>(不等)运算符,被!=替代了。

    六、Python条件控制

    1.if判断

    (1)小例子:

    (2)if嵌套

    if 表达式1:
        语句
        if 表达式2:
            语句
        elif 表达式3:
            语句
        else:
            语句
    elif 表达式4:
        语句
    else:
        语句

     

    七、Python循环语句

    1.while循环语句

    while(condition):
        statement

    例子:

    当条件永真时,会无限循环

    当条件不成立时跳出循环,也可以用break来终止循环

    2.for循环语句

    (1)一般格式

    for var in sequence:
        statemnet1
    else:
        statement2

    (2)小例子(range函数也可以指定步数,默认是整数 1)

    3.continue关键字

    从例子中就可以看出,continue是执行到该语句时,下面的语句不再执行,继续执行下一个循环过程

    八、Python 迭代器和生成器

    1.迭代器: 可以记住遍历的位置的对象。

    迭代是Python最强大的功能之一,是访问集合元素的一种方式。

    迭代器有两个基本的方法:iter() 和 next()

    (1)使用Python内置迭代器

    例子:

    (2)迭代

    (3)对自定义的类使用迭代器

    把一个类作为一个迭代器使用需要在类中实现两个方法:__iter__(),__next__()     ※注意是双下划线!!!!

    ① __iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过触发 StopIteration 异常标识迭代的完成(目的就是识别循环结束的情况,防止出现无限循环的情况)。

    ② __next__() 方法会返回下一个迭代器对象。

    ③小例子:

    更加合理的指定迭代范围的方式:

    2.生成器generator:生成器就是一个迭代器

    (1)定义:使用了yield的函数被称为生成器

    调用一个生成器函数,返回的是一个迭代器对象。

    (2)生成器的工作流程:

        在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值(相当于一个断点), 并在下一次执行 next() 方法时从当前位置继续运行

    小例子:使用yield实现斐波那契数列:

    九、Python函数

    1.定义一个函数

        函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。

        任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

        函数内容以冒号起始,并且缩进

        return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。

    2.调用函数

        直接使用函数标识符(加需要传递的参数)进行调用

    3.参数传递

    (1)明确一下Python里的可更改不可更改对象

        string、tuple、number都是不可更改对象;而list、dict是可更改对象

    下面的概念好好理解:

    不可变类型: 变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。

    可变类型: 变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

    (2)对于不可变类型、可变类型对象在调用函数中作为参数传递:

    不可变类型( string、tuple、number等):类似于C++的值传递;如func(a),a传入的只是a的值,并不影响原来a对象本身。比如在函数内部对a的值改变,改变的只是这个对象的复制对象,对象a本身是不变的。

    可变类型(list、dict等):类似于C++的引用传递,如func(la),la传入的是这个对象本身,函数内部对这个对象修改后,外部的对象是会被改变的。

    4.参数类型

    调用参数时可使用的正式参数类型:

    必需参数、关键字参数、默认参数、不定长参数

    (1)必需参数: 必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样

    (2)关键字参数: 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

    例:

    (3)默认参数

    调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:

    接上面例子:

    (4)不定长参数

    你可能需要一个函数能处理比当初声明时更多的参数。

    ①第一种形式:使用加*的参数,表示输入一个元组,这个元组的长度是不定的,由调用函数时,自动读取。

    例:

    ②第二种形式:使用加**的参数,表示输入形式为字典形式,长度不定

    例:

    5.匿名函数

    python 使用 lambda 来创建匿名函数。 lambda的主体是一个表达式,而不是一个代码块。

    所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

    lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

    (1)语法:注意写lambda表达式时参数部分不要加 [ ] 这个符号只是代表可以省略  ,不然会报错

    (2)例:

     可以看出,也可以不指定参数

    十、Python数据结构

    1.列表

    2.列表——>堆栈

    3. 元组和序列

    4.集合

    5.字典

    人生的奔跑不在于瞬间的爆发,而在于途中的坚持。
  • 相关阅读:
    vue cli3使用官方方法配置sass全局变量报错ValidationError: Invalid options object. Sass Loader has been initialised using an options object that does not match the API schema.
    面试必备:HashMap、Hashtable、ConcurrentHashMap的原理与区别
    Lombok介绍、使用方法和总结
    位运算
    【ZooKeeper系列】3.ZooKeeper源码环境搭建
    【ZooKeeper系列】2.用Java实现ZooKeeper API的调用
    【ZooKeeper系列】1.ZooKeeper单机版、伪集群和集群环境搭建
    弄明白CMS和G1,就靠这一篇了
    面试官,不要再问我三次握手和四次挥手
    【面试必备】小伙伴栽在了JVM的内存分配策略。。。
  • 原文地址:https://www.cnblogs.com/Nelsonblog/p/11787332.html
Copyright © 2011-2022 走看看