• python学习之基本语法---语法规则---注释,标识符,关键字,命名规则(二)day8



    活动地址:CSDN21天学习挑战赛

     ​

    活动地址:CSDN21天学习挑战赛

     ​

    前言:

    Python作为一门编程语言,和其它语言也是有非常多的类似的语法规则,比如, 保留关键字,命名规则,等等。因此,学习编程,应该是挑选一门自己喜好的语言来进行,那么,如果在想深入学习其它的编程语言,将会事半功倍的。

    本文,就Python的基本语法规则进行一些讨论,并会给出一些相应的例子,以使各位同学能够对Python的语法有一个比较深刻得印象。

    一,

    标识符

    标识符就是我们在程序中需要用到的变量、常量、函数、属性、类、模块等需要我们来自己定义的名字。尽管我们可以自主定义标识符,但是构成标识符有一定的规范:

    1)大小写的区分,Homework和homework属于两个不同的标识符。

    2)关键字不能作为标识符。

    3)标识符首位可以用下画线“_”但是不可以是数字。例如 _get、__doc__等是可以的,123get是不可以的。

    4)除去首字母,其他位可以使用下画线“_”,数字和字母。例如get_money、name2、list123等。

    5)不能使用内置函数作为标识符。

    通俗的说,一切需要我们自己定义起名字的东西就叫标识符。比如,我定义一个方法(函数),这个方法(函数)是需要一个名字的,那么,这个函数的名字就是标识符。

    例如下面的代码,哪些是标识符你知道吗?

    1. b = dir(__builtins__)
    2. print(b)
    3. print(len(b))

    标识符其实就一个啦,就是b。那么,下面这一段代码哪些是标识符呢?

    1. import os
    2. import sys
    3. def find_file_ends(path):
    4. for i, j, k in os.walk(path):
    5. for file in k:
    6. if file.endswith(houzhui):
    7. print(os.path.join(i, file))
    8. def find_file_starts(path):
    9. for i, j, k in os.walk(path):
    10. for file in k:
    11. if file.startswith(qianzhui):
    12. print(os.path.join(i, file))
    13. if __name__ == "__main__":
    14. path = sys.argv[1]
    15. tongpei = sys.argv[2]
    16. qianzhui = ""
    17. if tongpei.startswith("."):
    18. houzhui = sys.argv[2]
    19. find_file_ends(path)
    20. else:
    21. qianzhui = sys.argv[2]
    22. find_file_starts(path)

    find_file_ends,find_file_starts,path,tongpei,qianzhui,houzhui这些就是标识符啦。由以上代码可以看到,这段代码是由标识符和关键字组合的自定义函数,引用到了内置函数,内置类,由这些元素组成的。 

    二,

    关键字

    关键字是Python语言中被赋予特殊含义的单词,这些关键字不可以被用作标识符来使用。

    Python是区分大小写的,例如关键字if是不可以用作标识符,但是IF是可以用作标识符的。Python关键字有33个,分别是:

    FalseNoneTrueandassertasasyncawaitbreakclass
    continuedefelifelseexceptfinally'forfromglobalif
    importinislambdanonlocalnotorpassraisetry
    whilewithyield

    如何知道到底有哪些关键字呢?

    import keyword
    a = keyword.kwlist
    print("关键字是 :",a,end=' \n')
    print("关键字个数是 :",len(a) )

    输入如下:

    关键字是 : ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] 
    关键字个数是 : 35
    [Finished in 0.2s]

    在Python3.8版本里,现有关键字是35个,不相信的同学可以运行以上代码自己验证,多出的两个关键字是return和del(每个Python版本可能会不一样的,也许会多一点,也许会少一点。)

    关键字的用法(使用在哪?适用范围):

    1 and、or、not

    and、or、not关键字都是逻辑运算符,用法如下:

    • and:如果两个语句都返回True,则返回值将仅为True,否则它将返回False。全真则真,有假则全假
    • or:如果其中一条语句返回True,则返回值为True,否则它将返回False。全假则假,有真则全真,
    • not:如果语句不是True,则返回值为True,否则返回False。

    例子:

    1. x = (3>8 and 4<9)
    2. print(x)
    3. x1 = (4<8 and 3>4)
    4. print(x1)
    5. x2 = (3>8 or 4<9)
    6. print(x2)
    7. x3 = (4>9 or 3<8 )
    8. print(x3)

    输出的结果:

    1. False
    2. False
    3. True
    4. True
    5. [Finished in 0.2s]


    2 if、elif、else

    if、elif、else主要用于条件语句,用法如下:

    • if:用于创建条件语句(if语句),并且仅当条件为True时,才允许执行if代码块。
    • elif:在条件语句(if语句)中使用,是else if的缩写。
    • else:在条件语句(if语句)中使用,并确定在if条件为False时该执行的代码。
      1. def func(x):
      2. if x < 18:
      3. print("未成年")
      4. elif x < 30:
      5. print("青年")
      6. else:
      7. print("中老年")
      8. func(25)
      9. func(15)
      10. func(33)

    结果如下:

    1. 青年
    2. 未成年
    3. 中老年
    4. [Finished in 0.2s]


    其中,else关键字还常在try… except块中使用。

    3 for、while

    for、while主要用于定义一个循环,用法如下:

    • for:用于创建一个for循环,它可以用来遍历序列,例如列表,元组等。
    • while:用于定义while循环,while循环将继续,直到while的条件为False。

    for循环例子:

    1. name_list = ["zhangsan","lisi","wanger"]
    2. for name in name_list:
    3. print(name)

    结果如下:

    1. zhangsan
    2. lisi
    3. wanger
    4. [Finished in 0.1s]

    while循环例子(通常while是做无限循环用的):

    1. name_list = ["zhangsan","lisi","wanger"]
    2. while 1>0:
    3. print(name_list)

     结果如下(无限循环了):

    1. ['zhangsan', 'lisi', 'wanger']
    2. ['zhangsan', 'lisi', 'wanger']
    3. ['zhangsan', 'lisi', 'wanger']
    4. ['zhangsan', 'lisi', 'wanger']
    5. ['zhangsan', 'lisi', 'wanger']
    6. ['zhangsan', 'lisi', 'wanger']
    7. 。。。。。。。。。。。略略略

    不循环:

    1. name_list = ["zhangsan","lisi","wanger"]
    2. while 1>2:
    3. print(name_list)

     结果如下:

    无输出,条件为假,print函数不执行

    定义一个变量控制循环次数:

    1. name_list = ["zhangsan","lisi","wanger"]
    2. i = 1
    3. while i<=10:
    4. print(name_list)
    5. i +=1

    结果如下:

    1. ['zhangsan', 'lisi', 'wanger']
    2. ['zhangsan', 'lisi', 'wanger']
    3. ['zhangsan', 'lisi', 'wanger']
    4. ['zhangsan', 'lisi', 'wanger']
    5. ['zhangsan', 'lisi', 'wanger']
    6. ['zhangsan', 'lisi', 'wanger']
    7. ['zhangsan', 'lisi', 'wanger']
    8. ['zhangsan', 'lisi', 'wanger']
    9. ['zhangsan', 'lisi', 'wanger']
    10. ['zhangsan', 'lisi', 'wanger']
    11. [Finished in 0.2s]

    4 True、False

    True、False是比较操作返回的结果,用法如下:

    • True:关键字True与1相同。
    • False:关键字False与0相同。

    示例:

    1. print(1<2)
    2. print(1 in(11,101))
    3. print(1 == 1)

    结果如下:

    1. True
    2. False
    3. True
    4. [Finished in 0.2s]

    5 continue、break

    continue、break主要用在for循环和while循环中,用法如下:

    • continue:continue关键字用于在for循环(或while循环)中结束当前迭代,并继续进行下一个迭代。
    • break:break关键字用于中断for循环或while循环。

    for循环:

    1. for i in range(10,20):
    2. if i<=15:
    3. continue
    4. print(i)
    5. pass

    结果如下:

    1. 16
    2. 17
    3. 18
    4. 19
    5. [Finished in 0.2s]

    6 pass

    pass语句用作将来代码的占位符。当执行pass语句时,不会有任何影响,只是占位作用代表空白代码,但是,如果你不写任何东西,就会报错。循环,函数定义,类定义或if语句中不允许使用空代码的时候,则可以使用pass。注意,这个仅仅是占位的作用,没有其它深意。

    还是以上面的for循环为例,多写两个pass,对程序没有任何影响:

    1. for i in range(10,20):
    2. if i<=15:
    3. continue
    4. print(i)
    5. pass
    6. pass

    写一个空方法:

    1. def func():
    2. pass

    写一个空方法,并调用它:

    1. def func():
    2. pass
    3. print("hello,world")
    4. pass
    5. func()

     结果如下:

    1. hello,world
    2. [Finished in 0.1s]

    7 try、except、finally、raise

    try、except、finally、raise都是与异常有关的关键词,用法如下:

    • try:在try…except块中使用,它定义了一个代码块,并在没有问题的情况下执行块。如果包含任何错误,可以为不同的错误类型定义不同的块。
    • except:在try… except块中使用。 如果try块引发错误,并在有问题的情况下执行对应的代码块。
    • finally:在try…except块中使用。它定义了一个代码块,当try…except…else块结束时,该代码块将运行。无论try块是否引发错误,都将执行finally代码块。
    • raise:raise关键字用于引发异常,可以定义引发哪种错误,以及向用户显示错误信息。

    这几个关键字是异常处理操作使用的关键字,也可以看做是程序流程控制的关键字,如果异常乱抛,或者不抛,会造成非常严重的后果(程序表面正常,但bug可能就会出现了。)

    8 import、from、as

    import、from、as均与模块的导入有关,用法如下:

    • import:用于导入模块。
    • from:用于从模块中导入指定的部分,按需要导入指定子类或函数,减少不必要的资源浪费。
    • as:用于创建别名。

    导入自定义模块或者Python内置模块的专用关键词,在语法高级阶段,是需要常常使用的哦。

    9 def、return

    def、return均与函数有关的关键字,用法如下:

    • def:用于创建(或定义)一个函数。
    • return:用于结束所定义的函数,并返回值。

    例子如下(pass是无关的,可忽略):

    1. def func(a,b):
    2. pass
    3. return a*b
    4. print(func(a=2,b=18))

    结果如下:

    1. 36
    2. [Finished in 0.1s]

    10 class

    class关键字用于创建(或定义)一个类。

    示例如下(创建了一个persion类,该类有两个属性,name和age属性,然后引用该类,并打印它的属性):

    1. class Persion:
    2. name = "zhangsan"
    3. age = 10
    4. p =Persion()
    5. print(p.name,p.age)

    结果如下:

    1. zhangsan 10
    2. [Finished in 0.2s]

    11 lambda

    lambda关键字用于创建一个 “匿名函数”。这个函数是无名的,也通常叫做lambda表达式。

    lambda是一种简化写法的函数体,适用于写一些小体量的一次性函数,避免污染环境,同时也能简化代码。具体用法好像得单独开一篇文章详细讲解。

    12 del

    在Python中,一切皆对象。del关键字主要用于删除对象,还可以用于删除变量,列表或列表的一部分等。

    例子---定义了一个变量a,然后删除了这个变量a,在打印测试这个变量a,报错,变量没有定义:

    1. a = 111
    2. del a
    3. print(a)

    结果如下:

    1. Traceback (most recent call last):
    2. File "/test2.py", line 3, in
    3. print(a)
    4. NameError: name 'a' is not defined

    13 global、nonlocal

    global关键字用于创建一个全局变量。nonlocal关键字用于声明一个非局部变量,用于标识外部作用域的变量。

    例子:

    1. global a
    2. a = 123
    3. print(a)
    4. def func1(a,b):
    5. return a+b
    6. c = func1(a,22)
    7. print(c)

    global是全局的意思,因此,此关键字起到声明的作用,先声明一个变量  a是全局变量,然后打印变量a的值,当然, 此变量在其它的函数内可以直接引用咯。

    结果如下:

    1. 123
    2. 145
    3. [Finished in 0.1s]

    可以看到,即使func1这个函数没有定义a的值,而是直接引用,参数依然正确的被传导。但需要注意的是,全局变量的定义一定要慎重再慎重,因为,如果自定义的变量非常多的时候,你并不能保证你定义的变量是否是需要引用的那个。

    14 in、is

    in、is这两个关键字大家一定要区别开来,用法如下:

    • in:一方面可以用于检查序列(list,range,字符串等)中是否存在某个值。也可以用于遍历for循环中的序列。
    • is:用于判断两个变量是否是同一个对象,如果两个对象是同一对象,则返回True,否则返回False。要与== 区别开来,使用==运算符判断两个变量是否相等。

    in最常出现在for循环遍历数组,字符串等等情况下,这里就不多解释,is和==比较类似,需要多加理解,示例如下:

    1. a = 5.0
    2. b = 5.0
    3. print(a is b)
    4. print(a == b)

    结果如下:

    1. True
    2. True
    3. [Finished in 0.2s]

    (由于我是在IDE下运行的,因此,都是true,如果是在交互模式,比如,python idle下运行,结果是会不同的,is比较的是两个对象,对象只要内存地址不同,就会认为是不同的,也就是false,==是仅仅比较两者的数值,是进行数值计算的。) 

    15 None

    None关键字用于定义一个空值(根本没有值),与0,False或空字符串不同。 None是其自身的数据类型(NoneType),只能为None。这里没什么好说的,只要记住是None 大写就行了而不是none。

    16 assert

    调试代码时,使用assert关键字。主要用于测试代码中的条件是否为True,如果为False,将引发AssertionError,也就是俗称的预言,断言。

    17 with

    with常和open使用,用于读取或写入文件。使用了with这个关键字的语句也通常叫做with语句。

    例子---打开/etc/passwd 文件:

    1. with open('/etc/passwd','r') as f:
    2. print(f.read())

    结果如下:

    1. 略略略。。。。。。。。。
    2. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    3. rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
    4. nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    5. mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
    6. [Finished in 0.1s]

    18 yield

    yield关键字结束一个函数,返回一个生成器,用于从函数依次返回值。

    例子:

    1. def func3():
    2. yield 4
    3. func3()
    4. print(func3())
    5. print(next(func3()))

    结果如下:

    1. 4
    2. [Finished in 0.1s]

  • 相关阅读:
    Java版本+企业电子招投标系统源代码+支持二开+招投标系统+中小型企业采购供应商招投标平台
    Python 文档解析:lxml库的使用
    Python-日志模块
    安达发|在医药化工行业中好用的APS计划排程软件推荐
    驱动开发:内核R3与R0内存映射拷贝
    flume+es+kibana日志系统
    手把手教你前后分离架构(三) 前端项目美化
    超好用R包(grafify)
    什么是ConcurrentHashMap?
    面试中的这几个细节你一定要知道
  • 原文地址:https://blog.csdn.net/alwaysbefine/article/details/126264019