python学习之基本语法---语法规则---注释,标识符,关键字,命名规则(二)day8
  TEZNKK3IfmPf 2023年11月14日 67 0

前言

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

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

一,

标识符

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

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

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

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

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

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

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

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

b = dir(__builtins__)
print(b)
print(len(b))

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

import os
import sys




def find_file_ends(path):
    for i, j, k in os.walk(path):
        for file in k:
            if file.endswith(houzhui):
                print(os.path.join(i, file))


def find_file_starts(path):
    for i, j, k in os.walk(path):
        for file in k:
            if file.startswith(qianzhui):
                print(os.path.join(i, file))

if __name__ == "__main__":
    path = sys.argv[1]
    tongpei = sys.argv[2]
    qianzhui = ""
    if tongpei.startswith("."):
        houzhui = sys.argv[2]
        find_file_ends(path)
    else:
        qianzhui = sys.argv[2]
        find_file_starts(path)

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

二,

关键字

 

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

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

False None True and assert as async await break class
continue def elif else except finally' for from global if
import in is lambda nonlocal not or pass raise try
while with yield

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

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。

例子:

x = (3>8 and 4<9)
print(x)
x1 = (4<8 and 3>4)
print(x1)
x2 = (3>8 or 4<9)
print(x2)
x3 = (4>9 or 3<8 )
print(x3)

输出的结果:

False
False
True
True
[Finished in 0.2s]

 


2 if、elif、else

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

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

     

结果如下:

青年
未成年
中老年
[Finished in 0.2s]


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

 

3 for、while

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

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

for循环例子:

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

结果如下:

zhangsan
lisi
wanger
[Finished in 0.1s]

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

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

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

['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
。。。。。。。。。。。略略略

不循环:

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

 结果如下:

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

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

name_list = ["zhangsan","lisi","wanger"]
i = 1
while i<=10:
	print(name_list)
	i +=1

结果如下:

['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
['zhangsan', 'lisi', 'wanger']
[Finished in 0.2s]

 

4 True、False

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

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

示例:

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

结果如下:

True
False
True
[Finished in 0.2s]

 

5 continue、break

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

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

for循环:

for i in range(10,20):
	if  i<=15:
		continue
	print(i)
	pass

结果如下:

16
17
18
19
[Finished in 0.2s]

6 pass

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

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

for i in range(10,20):
	if  i<=15:
		continue
	print(i)
	pass
	pass

写一个空方法:

def func():
	pass

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

def func():
	pass
	print("hello,world")
	pass
func()

 结果如下:

hello,world
[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是无关的,可忽略):

def func(a,b):
	pass
	return a*b
print(func(a=2,b=18))

结果如下:

36
[Finished in 0.1s]

10 class

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

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

class Persion:
	name = "zhangsan"
	age = 10
p =Persion()
print(p.name,p.age)

结果如下:

zhangsan 10
[Finished in 0.2s]

 

11 lambda

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

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

 

 

12 del

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

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

a = 111
del  a
print(a)

结果如下:

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

13 global、nonlocal

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

例子:

global  a
a = 123
print(a)
def  func1(a,b):
	return a+b
c = func1(a,22)
print(c)

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

结果如下:

123
145
[Finished in 0.1s]

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

14 in、is

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

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

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

a = 5.0
b = 5.0
print(a is b)
print(a == b)

结果如下:

True
True
[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 文件:

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

结果如下:

略略略。。。。。。。。。
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

[Finished in 0.1s]

 

18 yield

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

例子:

def  func3():
	yield 4
func3()
print(func3())
print(next(func3()))

结果如下:

<generator object func3 at 0x7ff687cbc200>
4
[Finished in 0.1s]
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   34   0   0 python开发语言
  TEZNKK3IfmPf   2024年05月31日   27   0   0 python
  TEZNKK3IfmPf   2024年05月31日   35   0   0 excelpython
  TEZNKK3IfmPf   2024年05月31日   27   0   0 python
TEZNKK3IfmPf