Python从入门到项目实战笔记(2)基本语法元素

Python从入门到项目实战笔记(2)基本语法元素

基于计算机等级二级Python语言程序设计

程序的格式框架

程序的格式框架,即段落格式,是Python语法的一部分,这种设计有助于提高代码的可读性和可维护性。

  1. 缩进
    Python语言采用严格的”缩进“来表示程序逻辑。缩进指每行语句开始前的空白区域,用来表示Python程序间的包含和层次关系。一般代码不需要缩进,顶行编写且不留空白。当表示分支、循环、函数、类等程序含义时,在if、while、for、def、class等 保留字所在完整语句后通过引文冒号(:)结尾并在之后行进行缩进,表明后续代码与紧邻无缩进语句的所属关系。需要注意,不是所有语句都可以通过缩进包含其他代码,只有上述一下特定保留字所在语句才可以引导缩进。
    代码编写中,缩进可以用Tab键实现,也可以用多个空格实现(一般时4个空格),但两者不混用。Python中建议采用4个空格的书写方式。Python语言对语句之间的层次关系没有显示,可以嵌套使用多层缩进。
    如果Python程序执行时产生了”Unecpected indent“错误,则说明代码中出现了缩进不匹配的问题,需要查看所有的缩进是否一样,以及错用缩进的情况。

  2. 注释
    注释是代码中的辅助性文字,会被编译器或解释器略去,不被计算机执行,一般用于程序员对代码的说明。Python采用”#“表示一行注释的开始。

    # 单行注释
    # 单行注释
    print("hello world") # 这也是一个单行注释
    

    在python中,使用一堆三引号("""")或(’’’’’’)进行多行注释,引号中间的代码,解释器将忽略。

    '''
    这是单引号多行注释
    这是单引号多行注释
    '''
    """
    这是双引号的多行注释
    这是双引号的多行注释
    """
    

    多行注释通过用来为Python文件、模块、类或者函数等添加版权、功能等信息,也经常用来解释代码中重要的函数、参数等信息,以便于后续开发这维护代码。

  3. 续行符
    Python程序是逐行编写的,每行代码长度并无限制,单从程序员角度,单行代码太长并不利于阅读,因此,Python提供“续行符”将单行代码分割为多行表达。续行符有反斜杠(\)符号表达。

    print("这是"+\
    "一行"+\
    "字符")
    

语法元素的名称

与自然语言相似,Python语言的基本单位是“单词”,少部分单词是Python语言规定的,被称为保留字,大部分单词是用户自定义的,通过命令过程形成了变量或函数,用来代表数据或代码。

  1. 变量
    变量是保存和表示数据值的一种语法元素,在程序中十分常见。顾名思义,变量的值是可以改变的,能够通过赋值(使用等号“=”表达)方式被修改。
    >>> a = 99
    >>> a = a + 1
    >>> print(a)
    
    在python中,变量可以随时命名,随时赋值,随时使用。
  2. 命名
    给变量或其他程序元素关联名称或标识符的过程称为命名。
    Python采用大写字母、小写字母,数字、下划线和汉字等字符及其组合进行命名,单名字的首字母不能是数字,标识符中间不能出现空格,长度没有限制。
    一般来说,程序员可以选择任何喜欢的名字,包括使用中文字符命名,但从编程习惯和兼容性角度考虑,一般不建议采用中文等非英语语言字符对变量命名。标识符名字不能与Python保留字相同。
  3. 保留字O
    保留字(keyword),也称关键字,值被编程语言内部定义并保留使用的标识符。程序员编写程序不能命名与保留字相同的标识符。每种程序语言都有一套保留字,保留字一般用来构成程序整体框架,表达关键值和具有结构性的复杂语义等。
    python3中共有35个保留字,可以通过以下的方式引入。
    import keyword
    keyword.kwlist
    #通过引入keyword库,可以查询到保留的关键字。
    

数据类型

计算机对数据进行运算时需要明确数据的类型和含义。比方说十进制与二进制的数值值是不一样的。不仅对计算机,即使对人来说,也需要清楚数字所表达的基本类型及含义。数据类型用来表达数据的含义,消除计算机对数据理解的二义性。
Python语言支持多种数据类型,最简单的包括数字类型、字符串类型,略微复杂的包括元组类型、集合类型、列表类型、字典类型。
  1. 数值类型
    表示数字和数值的数据类型成为数字类型,Python语言提供了3中数字类型:整数、浮点数和复数。
    整数类型与数学中的整数相一致,没有取值范围限制,可正可负。一个整数值可以表示为十进制、十六进制、八进制和二进制等不同进制形式。
    十进制: 1010
    十六进制:0x3F2
    八进制:0o1762
    二进制:0b001111110010
    在程序中,不同进制的形式的数值,是可以直接进行比较的
    浮点书类型与数学中的小数相一致,基本没有取值范围,可正可负,一个浮点书可以表示为带小数点的一般形式,也可以采用科学计数法表示。浮点数只有十进制。
    一般形式:123.456
    科学计数法:1.23456e2
    复数类型与数学中的复数相一致,采用a+bj的形式表示,存在实部和虚部。
  2. 字符串类型
    计算机程序经常用于处理文本信息,文本信息在程序中使用字符串类型来表示。字符串是字符的序列,在python语言中采用一对双引号或单引号括起来的一个或多个字符来表示。其中,双引号和单引号作用相同。
    作为字符序列,字符串可以对其中单个字符或字符片段进行索引。字符串包括两种序号体系:正向递增序号和反向递减序号。如果字符串长度为L,正向递增需要以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1;反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。这两种字符索引字符的方法可以同时使用。
    >>> "一二三四五六七八九十"[1]
    '二'
    >>>"一二三四五六七八九十"[-1]
    可以采用[N:M]格式获取字符串的子串,这个操作被形象地称为切片。[N:M]获取字符串中从N到M(但不包括M)间连续的字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。

程序的语句元素

  1. 表达式
    产生或计算新数据值的代码片段被成为表达式。表达式类似数学中的计算公式,以表达单一功能为目的,运算后产生运算结果,运算结构的类型由操作符或运算符决定
    表达式一般由数据和操作符等构成,是构成Python语句的重要部分
  2. 赋值语句
    对变量进行赋值的一行代码称为赋值语句。在Python语言中,“=”表示赋值,即将等号右侧的表达式计算后的结果值赋给左侧变量。
    >>>a=1024*32
    >>>print(a)
    32768
    
    在Python程序中,赋值语句使用等号(=)表达,而值相等的判断使用双等号(==)表达。双等号判断后的结果是True(真)或False(假),分别对应相等或值不相等。
    此外在Python还有一种同步赋值语句,同时给多个变量赋值。
    >>>n = 3
    >>>a,b=n+1,n+2
    
    同步赋值会同时运算等号右侧的所有表达式,并一次性且同时将右侧表达式结果分别赋值给左侧的对应变量。
  3. 引用
    Python程序会经常使用当前程序之外已有的功能代码,这个过程叫“引用”。Python语句使用import保留字引用当前程序意外的功能库,使用方法如下:
    import <功能库名称>
    引入功能库之后,采用<功能库名称>.<函数名称>()方式调用具体功能,这种方式简称A.B()方式

基本输入输出函数

  1. print()函数
    在Python中,使用内置的print()函数可以将结果输出到IDLE或这标准控制台上。
    print(输出的内容)
    其中,输出内容可以是数字和字符串(字符串需要使用引号括起来),此类内容将直接输出,也可以是包含运算符的表达式,此类内容将计算结果输出。
    a = 100
    print(a)
    print("test")
    
    在Python’中,默认情况下,一条print()语句输出后会自动换行,如果想要依次输出多个内容,而且不换行,可以将要输出的内容使用英文的都好分割
    print(a,"test")
    
  2. input()函数
    input()函数从控制台获得用户的一行输入,无论用户输入什么内容,input()函数都以字符串类型返回结果。input()函数可以包含一项提示性文字,用来提示用户,使用方式如下:
    <变量>=input(<提示性文字>)
    变量可以方便之后对用户输入的内容进行操作。
    a=input()
    print(a)
    
  3. eval()函数
    eval()函数将去掉字符串s最外侧的引号,并按照Python语句方式执行去掉引号后的字符内容:
    <变量>=eval(<字符串>)
    >>> a=eval(1)
    1
    >>>b=eval("1.2+3.4")
    4.6
    
    eval可以直接对内容进行运算,并将结果保存到变量中。但要注意,如果是普通的字符串,eval去掉双引号后,会将其解释为某个变量,如果程序之前没有定义过该变量,则会报错。

源程序的书写风格

由于Python语言的格式框架也是语法元素的一部分,且语法中没有过多的控制格式符号,因此,不经过任何要求的Python源程序都具有一定的可读性。进一步的,什么样的代码才是漂亮的呢?Tim Peters从哲学层面给出了一个非常优美的回答,被称为"Python之禅"(the Zen of Python)

>>>import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
  • 优美胜于丑陋
  • 明了胜于隐晦
  • 简洁胜于复杂
  • 复杂胜于凌乱
  • 扁平胜于嵌套
  • 间隔胜于紧凑
  • 可读性很重要
  • 即使假借特例的使用性知名,也不要违背上述规则
  • 除非你确定需要,任何错误都应该由应对
  • 当村在多种可能时,不要尝试去猜测
  • 只要你不是Guido,对于问题尽量找一种,最好时唯一明显的解决方案
  • 做也许好过不做,但不假思索就动手还不如不做
  • 如果你无法向人描述你的实现方案,那肯定不是一个好方案
  • 如果实现方案容易解释,可能是个好方案
  • 命名空间是绝妙的理念,要多运用。

编码规范

Python中采用PEP8作为编码规范,其中PEP是Python Enhancement Proposal的缩写,意思就是Python增强建议书,8,表示版本号。下面给处PEP8编码规范中的一些应该严格遵守的条目。

  • 每个import语句只导入一个模块,尽量避免依次导入多个模块。
  • 不要在行尾添加";",也不要用分号将两条命名放在同一行
  • 建议每行不超过80个字符
  • 使用必要的空行可以增加代码的可读性。一般在顶级定义之间空两行,方法之间空一行。另外,在用于分隔某些功能的位置也可以空一行。
  • 通常情况下,运算符两侧、函数参数之间、都会","两侧建议使用空格进行分隔
  • 适当使用异常处理结构提高程序容错性,但不能过多依赖异常处理结构,适当的显式判断还是必要的。

你可能感兴趣的:(python)