Python基础语法

上次写了python开发环境的搭建,今天我们接着学习python基础的语法知识。后面小栈会陆续讲解Python其他操作,包括对txt文件、json文件、xml文件,Excel文件的读写,数据的过滤提取,正则表达式的使用,GUI图形界面的开发等,小栈会基于过往工作中的实际项目开发为基础讲解,当然公司的实际项目源码不能提供,不过小栈自己也在Github上写了几个开源的小工具,后面讲到对应的知识的时候会提供Github地址。

在讲解基础语法之前,小栈做一些python库的知识介绍吧。python提供了丰富的标准库供直接使用,这些库在我们安装python时会被一起安装,我们在安装目录的Lib和libs可以看到这些库文件,库的使用我们可以直接看官方文档:https://docs.python.org/zh-cn/3.9/library/index.html ,在左上角选择Simplified Chinese即可看中文本。

图片

另外还有丰富的第三方组件,我们引用官方网站中的话——在这个标准库以外还存在成千上万并且不断增加的其他组件 (从单独的程序、模块、软件包直到完整的应用开发框架),访问 Python 包索引 即可获取这些第三方包。这也正是python强大生态的原因!使用第三方库我们首先需要安装对应的python包。例如,我们想要读写Excel文件,那么就要安装xlwings包(也可以选择安装其他的包)。

pip install xlwings -i https://mirrors.aliyun.com/pypi/simple

pip install 就是安装python包的命令,-i 后面跟的是源,即下载包的地址,可以选择清华源,阿里源等国内的镜像源,如果不加国内源的话包下载比较慢,甚至安装失败。如果想卸载xlwings包,用pip uninstall xlwings即可,可以用pip list查看安装了哪些包。如果想要指定版本,可以用 pip install xlwings==0.24.9,也可以将需要安装的所有包都写入requirements.txt,然后使用pip install -r requirements.txt 进行安装,将项目打包给别人的时候常用这种方式。

首先说一下模块的使用,Python中用import或者from xxx import xxx 来导入需要的模块,类似C/C++中的include,例如我们用xlwings 操作Excel:

import xlwings
app = xlwings.App(visible=True, add_book=False)  # 打开Excel程序

这里我们看到,python中注释用#开头,python只有这一种正规的注释方式,很多人用""" xxx """ 方式进行多行的注释,本质上是定义了一个没有变量名的多行字符串变量,这是一种取巧的注释方式。

python在编写代码时有一个特色,就是使用缩进来表示代码块,与C/C++使用{}有明显的区别,例如:

图片

所以相同层级的代码要用相同的缩进,否则就是错误的语法逻辑。从上面我们也能看出,python定义变量非常随意,不用类型声明,例如:

a = 1         # 整数1
b = 2.5       # 浮点数2.5
c = 3 + 4j    # 复数3 + 4j
d = "abc"     # 字符串
e = [1, 2.5, "abc"]  # 列表
f = (1, 2.5, "abc")  # 元组
g = {1, 2.5, "abc", "abc"}  # 集合
h = {1: 1, "b": 2.5, "c": "abc"}  # 字典

print("a=%d" % (a))  # %号方式打印
print("b=", b)      # 自动转换方式打印
print("c="+str(c))  # +号方式打印,即字符串拼接
print("d="+d)       # +号方式打印,即字符串拼接
print(f"e={e}")     # f连接方式打印
print("f="+str(f))  # +号方式打印,即字符串拼接
print("g="+str(g))  # +号方式打印,即字符串拼接
print(f"h={h}")     # f连接方式打印

python会根据变量定义时的写法自动识别变量类型,上述代码有很多基础的知识,我们慢慢讲解,首先python具有6个标准数据类型,分别是Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)。数字类型中有整数,浮点数,复数三种,对应上面的a,b,c三个变量,字符串对应d变量,字符串使用单引号或双引号均可,列表对应e变量,列表类似C语言中的数组,但python的列表中的元素可以是任意数据类型。元组对应f变量,元组和列表类似,但元组的元素不能修改,这里又牵涉到可变数据类型和不可变数据类型的区别,后面会讲解。集合对应g变量,集合中的元素不能重复,且元素是无序的,从打印结果也可看出,重复元素只打印出一次,打印的元素顺序也变了。字典对应的是变量h,字典的每个元素是由键值对构成,用冒号分割,字典中的键必须是唯一的,不可重复,且不可变,可用数字或字符串表示,值可以是任意数据类型,python2中字典是无序的,python3的高版本中字典已经是有序的了。

从上面也能看到print打印字符串有多种方式,+号可以直接拼接字符串,在C++中可以通过符号重载实现这种功能,对于数字可用str()先将数字转换成字符串,字符串前的f是f-string,亦称为格式化字符串常量(formatted string literals),以大括号 {} 标明被替换的字段,在3.6版本以后用于简化str.format()方式,这种方式非常好用,推荐使用。

最后说一下可变数据类型和不可变数据类型,在Python的6个标准数据类型中,不可变数据类型有3个:Number(数字)、String(字符串)、Tuple(元组),可变数据类型有3个:List(列表)、Dictionary(字典)、Set(集合)。

不可变数据类型即变量定义后变量值不能被改变,如果改变了变量值,相当于重新定义了一个新的变量,变量的内存中地址已经改变,而对于可变数据类型的变量则可以随时改变变量值,其在内存中的地址不发生改变。可通过id()查看内存地址:

a = ("11", "22", "33")   # 元组,不可变数据类型
b = ["44", "55", "66"]   # 列表,可变数据类型
print(f"a_id: {id(a)}")
print(f"b_id: {id(b)}")

# a[0] = "00"    # 错误写法,元组不可改变
b[0] = "77"    # 或者b.append("77")
print(f"b={b}, id={id(b)}")

# 使用赋值语句
a = ("aa", "bb", "cc")
b = ["dd", "ee", "ff"]
print(f"a_id: {id(a)}")
print(f"b_id: {id(b)}")

# 打印结果:
a_id: 1847803378304
b_id: 1847803766016
b=['77', '55', '66'], id=1847803766016
a_id: 1847803371904
b_id: 1847796713792

对于不可变数据类型的变量a,我们不能对其值进行改变,对于可变数据类型的变量b,我们用 b[0] = "77"或者b.append("77") 改变了其值后,其内存地址不变。注意看使用赋值语句操作时的现象,使用赋值语句对不可变数据类型a和可变数据类型b进行赋值,我们观察到a和b的内存地址都变了,为什么会这样哪?这是因为用赋值语句时本质上是在内存中新建了一个变量,所以才会看到两个变量的内存地址都变了。

今天就先到这里吧,凌晨2点了,哎,明天上班估计要迟到了。。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值