四、基础语法

四、基础语法

4.1、变量

4.1.1、Python的表示规范

简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。Python中标识符的命名不是随意的,而是要遵守一定的命令规则

  • 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。
  • 标识符不能和 Python 中的保留字相同。有关保留字,后续章节会详细介绍。
  • Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。
  • 在 Python 中,标识符中的字母是严格区分大小写
  • Python 语言中,以下划线开头的标识符有特殊含义
  • Python 允许使用汉字作为标识符(不推荐)

标识符的命名,除了要遵守以上这几条规则外,不同场景中的标识符,其名称也有一定的规范可循,例如:

复制代码
"""
1.当标识符用作模块名时,应尽量短小,并且全部使用小写字母,使用下划线分割多个字母,例如game_mian、game_register 等。

2.当表示符用作包的名称时,应尽量短小,也全部使用小写字母。不推荐使用下划线,例如 com.mr、com.mr.book 等。

3.当表示用作类名时,应采用单词首字母大写的形式。例如,定义一个图书类,可以命名为 Book。

4.函数名、类中的属性和方法,应全部使用小写字母,多个单词之间可以使用下划线分隔;

5.常量名应用全部使用大写字母,单词之间可以用下划线分割;
"""
复制代码

4.1.2、Python的关键字

andasassertbreakclasscontinue
def del elif else except finally
for from False global if import
in is lambda nonlocal not None
or pass raise return try True
while with yield      

4.1.3、变量

变量名一段有名字的连续存储空间。我们通过定义变量来申请并命名这样的存储空间,并通过变量名的名字来使用这段存储空间。在编程语言中,将数据放入变量的过程叫做赋值(Assignment)。Python使用等号=作为赋值运算符、具体格式为:

变量名 = 任意类型的值

例如:

x = 10
y = 20
z = True
x = "hello world"

python作为动态语言的代表,是不同于C语言等静态语言的变量存储原理的

 

 

 
x = 10
print(id(x))
x = 20
print(id(x))

4.2、基本语法

(1)注释

注释就是对代码的解释和说明,其目的是让人们能够更加轻松的了解代码。注释是编程写程序时,写程序的人给一个语句、程序段、函数等解释或提示、能提高程序代码的可读性。一般情况下,合理的代码注释应该站源代码的1/3左右。

注释只是为了提高公认阅读,不会被解释器执行。

Python 支持两种类型的注释,分别是单行注释和多行注释。

# 一、关于注释
# 注释的内容是不被Python解释器执行的内容,给别人做注释用的, 这是一个单行注释。


"""
这是一个多行注释
三引号里面的任何内容不会被执行
"""

(2)语句分隔符

就像我们写作文一样,逗号、句号等语句分隔符是非常重要的,程序也一样,要想让解释器能读懂,语句和语句之间一定要有分隔符。在C、Java等语言的语法中规定,必须以分号作为语句结束的标识。Python也支持分号,同样用于一条语句的结束标识。但在Python中分号的作用已经不像C、Java中那么重要了,Python中的分号可以省略,主要通过换行来识别语句的结束。

(3)缩进

和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python 采用冒号( : )和代码缩进和来区分代码块之间的层次。在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。

注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。

(4)Python编码规范(PEP 8)

1.格式化的快捷键 win用户control+alt+L   mac用户option+command+L

Python 采用 PEP 8 作为编码规范,其中 PEP 是 Python Enhancement Proposal(Python 增强建议书)的缩写,8 代表的是 Python 代码的样式指南。下面仅给大家列出 PEP 8 中初学者应严格遵守的一些编码规则:

1、不要在行尾添加分号,也不要用分号将两条命令放在同一行

2、通常情况下,在运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔。

3、使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。

4.3、基本数据类型

基本数据类型

1.整形
2.浮点型
3.布尔类型
4.字符串类型

4.3.1、整形和浮点型

  • 整形

在Python中整数都属于整形,不同C语言会根据整数的大小将整形分类为short、int、long、longlong、四种类型,Python只有一种整形,即int类型,无论整形数字多大多小都属于int。

# Python内置函数: type: 查看某个数据的类型
x = 10
print(type(x)) # <class 'int'>

说到整形,就不得不提到整形数字之间进制

复制代码
# 十六进制
print(0x11)
print(0x111)

# 二进制
print(0b101)
print(0b1011)

# 八进制
print(0o12)
print(0o23)

# 十进制转换为二进制
print(bin(3))

# 十进制转换为十六进制
print(hex(18))

# 十进制转换为八进制
print(oct(10))
复制代码
  •  浮点型

在Python中小数都属于浮点型(float),有两种表现方式

复制代码
# 小数点形式
f = 3.14
print(f)  # 3.14
print(type(f))  # <class 'float'>

# 指数形式; aEn 或 aen
"""
3.2E5 = 3.2×105,其中 3.2 是尾数,5 是指数。
2.7E-3 = 2.7×10-2,其中 2.7 是尾数,-3 是指数。
0.2E8 = 0.2×107,其中 0.2 是尾数,8 是指数。
"""

f1 = 3.2E5
print(f1) # 320000.0
print(type(f1)) # <class 'float'>

f2 = 3.2E-5
print(f2) # 3.2e-05
print(type(f1)) # <class 'float'>

f3 = 3.1415926123456789876543217789
print(f3)  # 双精度(double float,保留17为有效数字)
print(type(f3))  # <class 'float'>
复制代码

 

4.3.2、布尔类型

布尔类型(Boolean)是一种数据的类型,这种类型只有两种值,即"真"与"假"。在Python中用bool表示布尔类型,"真"用关键字"True"表示,"假"用False表示

print(4 == 2) # False
print(5 > 1) # True

name = "hao"
print(name == "summer")  #  False
print(1 == "1") # False

 

不光表达的结果是布尔值,任意都有自己的布尔值,这就涉及到布尔值的零值。

复制代码
# 任意数据类型都有一个具体的布尔值为False,我们撑为零值。改类型的其他布尔值皆为True。
print(bool("")) # 字符串的零值 ""
print(bool(0))  # 整形的零值 0
print(bool(False)) # 布尔类型的零值 False

print(bool("0"))
print(bool("-1"))
print(bool("hao"))
print(bool(-1))
print(bool(0.1))
复制代码

 

4.3.3、字符串

 字符串是有零个或多个字符组成的优先序列。字符的内容可以包含字母、标点、特殊符号、中文、日文等世界的所有字符

在Python中字符串是通过单引号''或者""双引号表示的。

s1 = "hi hao"
print(si)

s2 = ""
print(s2)

s3 = "学好Python"
print(s3)

Python 字符串中的双引号和单引号没有任何区别!

(1)字符串的转义符

1.将一些普通的符号转为特殊符号

2.将一些特殊符号转换为普通符号

转义字符说明
\n 换行符,将光标位置移到下一行开头。
\r 回车符,将光标位置移到本行开头。
\t 水平制表符,也即 Tab 键,一般相当于四个空格。
\a 蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。
\b 退格(Backspace),将光标位置移到前一列。
\ 反斜线
' 单引号
" 双引号
\ 在字符串行尾的续行符,即一行未完,转到下一行继续写。
s1 = "hello world \nhi all"
print(s1)

s2 = 'I\m hao'
print(s2)

s3 = "D:\\nythonProject\\nenv\\Scripts\\python.exe"
print(s3)

(2)长字符串

# 长字符串防止单引号或者双引号不会导致解析错误
s = """"
白日依山尽
黄河入海流
"""
print(s)

(3)格式化输出

print()函数的用法,这只是最简单最初级的形式,print()还有跟多的高级的玩法,拨入格式化输出。

复制代码
# 字符串的格式化输入

name = "zhangsan"
age = 18
gender = ""

# 所谓魔板或者格式化字符串: 将动态变化的值嵌入到字符串的某个位置中。
s6 = "姓名 zhangsan。 年龄 18。 性别 男。"

# 占位符: %s: 给字符串占位置 %d: 给十进制整型数字占位置 %f: 给浮点型占位
s6 = "姓名 %s 年龄 %d 性别 %s" %(name,age,gender)
#姓名 zhangsan 年龄 18 性别 男
print(s6)
复制代码

在print()函数中,由引号保卫的是格式化字符串,它相当于一个字符串模板,可以防止一些转换说明(占位符)。本利的格式化字符串包含一个%s和%d说明符,他最终会被后面的name和age变量的值所替代。中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。

print() 函数使用以%开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。

转换说明符解释
%d、%i 转换为带符号的十进制整数
%o 转换为带符号的八进制整数
%x、%X 转换为带符号的十六进制整数
%e 转化为科学计数法表示的浮点数(e 小写)
%E 转化为科学计数法表示的浮点数(E 大写)
%f、%F 转化为十进制浮点数
%g 智能选择使用 %f 或 %e 格式
%G 智能选择使用 %F 或 %E 格式
%c 格式化字符及其 ASCII 码
%r 使用 repr() 函数将表达式转换为字符串
%s 使用 str() 函数将表达式转换为字符串

(4)归属序列类型

字符串属于序列型,所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值锁在位置的编号(称为索引)访问它们。

s = "hello world"

 

python还支持索引值时负值,此类所用是从左向右技术,换句话说,从最后一个元素开始计算,从索引值-1开始,如图所示

 

 序列类型支持的操作:

复制代码
# 一个字符串是由若干个字符按顺序构成的
# 序列类型操作一: 通过索引获取值(支持正负索引) 语法格式对象[索引]
# 序列类型操作一: 切片操作 获取多个值  语法格式  数据对象[开始索引:结束索引]step=1 
# 特点一: 左闭右开 顾头不顾尾
# 特点二: 步长默认为1即从左向右一个一个的切割

# 步长参数为正:代表从左向右切割 为负数从右向左切割

#
(1)索引取值 s = "hello world" print(s[6]) print(s[10]) # (2)切片取值:序列类型对象[start: end : step] s = "hello world" print(s[1:4]) # ell :取索引1到索引3(左闭又开) print(s[1:]) # hell :start缺省,默认从0取 print(s[1:-1]) # ello world :end缺省,默认取到最后 print(s[6:9]) # ello worl print(s[-4:-2]) # wor print(s[-1:-4]) # or print(s[-1:-4:-1]) # dlr # 3.判断存在:Python中可以使用 in 关键字检查某元素是否为序列的成员 s = "hello world" print("hello" in s) # True # 4.支持两种类型相同的序列使用"+"运算符相加操作,他会将两个序列进行连接,但不会去除重复的元素。 # 使用数字 n 乘以一个序列会生成新的序列,器内容为原来列被重复 n 词的结果 s = "hello world" print(s) # hello world s = "*"*10 print(s) # **********
复制代码

(5)内置方法(重点)

方法作用示例输出
upper 全部大写 "hello".upper() "HELLO"
lower 全部小写 "Hello".lower() "hello"
startswith() 是否以a开头 "Yuan".startswith("Yu") True
endswith() 是否以a结尾 "Yuan".endswith("a") False
isdigit() 是否全数字 '123'.isdigit() True
isalpha() 是否全字母 'hello123'.isalpha() False
isalnum() 是否全为字母或数字 'hello123'.isalnum() True
strip() 去两边空格 " hi all \n".strip() "hi all"
join() 将多个字符串连接在一起 "-".join(["hao","summer","hugo"]) "hao-summer-hugo"
split() 按某字符分割字符串,默认按空格分隔 "hao-summer-hugo".split("-") ['hao', 'sunmmer', 'hugo']
find() 搜索指定字符串,没有返回-1 "hello world".index("w") 6
index() 同上,但是找不到会报错 "hello world".index("w") 6
count() 统计指定的字符串出现的次数 "hello world".count("l") 3
replace() 替换old为new 'hello world'.replace(‘world',‘python') "hello python"
format() 格式化方法    

 

复制代码
"""
任意数据对象.方法()实现对数据的某种操作
不同数据类型对象支持不同方法
字符串类型对象支持哪些方法
"""

s1 = "hello"
s2 = "HELLO"

# 1.upper方法和lower方法
s3 = s1.upper()
s4 = s2.lower()
print(s3) # HELLO
print(s4) # hello

s5 = "hello world"
s6 = "hi world"

# 2.startswith和endswith: 判断字符串是否以什么开头和结尾
print(s5.startswith("hello")) # True
print(s6.startswith("hello")) # False
print(s6.startswith("hi wor")) # True
print(s6.endswith("hi wor")) #  False

# 3.isdigit(): 判断字符串是否是一个数字字符串
s7 = "123"
s8 = "123A"

print(s7.isdigit()) # True
print(s8.isdigit())  # False
s9 = "123ASS&#"
print(s9.isdigit()) # False 不能包含特殊符号

# 4.strip(): 去除两端空格和换行符号
s10 = "I am hao"
print(s10)
print(s10.strip())
name = input("请输入姓名").strip()
print(name)

# 5.split分割方法:将一个字符串分割成一个列表
s11 = "hi-all-hello-world"
print(s11.split("-")) # ['hi', 'all', 'hello', 'world']

# 6. join方法:将一个列表中的字符串拼接成一个字符串
name_list = ['hi', 'all', 'hello', 'world']
s12 = "-".join(name_list)
print(s12,type(12)) # hi-all-hello-world <class 'int'>
复制代码

4.3.4、类型转换

i = int("3")
print(i,type(i)) # 3 <class 'int'>

s = str(3.14)
print(s,type(s)) # 3.14 <class 'str'>

4.4、运算符

4.4.1、算数运算符

运算符说 明用法举例等价形式
= 最基本的赋值运算 x = y x = y
+= 加赋值 x += y x = x + y
-= 减赋值 x -= y x = x - y
*= 乘赋值 x *= y x = x * y
/= 除赋值 x /= y x = x / y
%= 取余数赋值 x %= y x = x % y
**= 幂赋值 x **= y x = x ** y
//= 取整数赋值 x //= y x = x // y
&= 按位与赋值 x &= y x = x & y
|= 按位或赋值 x |= y x = x | y
^= 按位异或赋值 x ^= y x = x ^ y
«= 左移赋值 x «= y x = x « y,这里的 y 指的是左移的位数
»= 右移赋值 x »= y x = x » y,这里的 y 指的是右移的位数

4.4.3、比较运算符

比较运算符说明
> 大于,如果>前面的值大于后面的值,则返回 True,否则返回 False。
< 小于,如果<前面的值小于后面的值,则返回 True,否则返回 False。
== 等于,如果==两边的值相等,则返回 True,否则返回 False。
>= 大于等于(等价于数学中的 ≥),如果>=前面的值大于或者等于后面的值,则返回 True,否则返回 False。
<= 小于等于(等价于数学中的 ≤),如果<=前面的值小于或者等于后面的值,则返回 True,否则返回 False。
!= 不等于(等价于数学中的 ≠),如果!=两边的值不相等,则返回 True,否则返回 False。
is 判断两个变量所引用的对象是否相同,如果相同则返回 True,否则返回 False。
is not 判断两个变量所引用的对象是否不相同,如果不相同则返回 True,否则返回 False。

4.4.4、逻辑运算符

逻辑运算符含义基本格式说明
and 逻辑与运算 a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。
or 逻辑或运算 a or b 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。
not 逻辑非运算 not a 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。
 
print(2>1 and 2==1) # False
print(not 3<5) # False
print(not (4<2) or 1==2)  # True

值得注意的是逻辑运算符有一套很好玩的短路算法

print(2 and 1) # 1
print(0 and 1) # 0
print(0 or 1) # 1
print(3 or 5) # 3  

4.5、输入输出函数

(1)print函数

print()用于打印输出,是python中最常见的一个函数。

复制代码
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
    """
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
    """
    pass
复制代码

(2)input函数

以上信息说明input函数在python中是一个内建函数,其从标准输入中读入一个字符串,并自动忽略换行符。也就是说所有形式的输入按字符串处理,如果想要得到其他类型的数据进行强制类型转化。

name = input("您的姓名:")
age = input("您的年龄:")
print(name,type(name))
print(age,type(age))

 

 

posted @   xiaohaoge  阅读(114)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示