Python-基础语法篇(变量与数据结构,流程控制)
Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。
Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。
1、重要目录介绍:
- Lib目录:存放模块
- Lib\site-packages:存放第三方模块
- Scripts目录:存放可执行程序
- Scripts\pip.exe:官方Python包安装工具
- python.exe:Python执行程序

2、运行第一个python脚本(hello.py):
#保存文件名为hello.py
print("hello world")
| python ./hello.py |
搜索指定路径下hello.py进行执行 |
| python -m hello |
自动搜索sys.path中名称为hello的pyhon脚本进行执行 1、sys.path为包含多个目录路径的列表 2、包含执行时所在目录、Python安装目录和PYTHONPATH环境变量的每个目录 |
| Linux运行 |
方法1:开头用 #! 指定解释器,赋予可执行权限,直接./hello.py 方法2:python3 ./hello.py |
3、变量和数据类型
-
a = 10
- a为变量名,变量名存储内存地址,内存地址中存储数据10
-
id(a):获取变量a的内存地址
- 局部变量:方法内部定义的变量,只在该方法内生效
- global关键字:使局部变量可在方法外被访问
- 作用域介绍
- __xx__、__xx__():特殊成员,可直接访问、比如print(__file__)
- __name__:模块名
- 直接运行:__name__ == "__main__"
- 导入运行:__name__ =="hello"
- __name__:模块名
- __xx:私有成员、只能在类内部使用(实际会自动改名:_类名__xx)
- 数据类型介绍:
|
不可变类型 1、重新赋值后变量内存地址会变化 2、作为入参:在函数内部“修改”它(实际上是重新赋值),不会影响外部的原始数据。 |
数值: <class 'int'>、<class 'float'>、<class 'complex'> 布尔:<class 'bool'> 字节串:<class 'bytes'> 字符串: <class 'str'> 元组:<class 'tuple'> |
|
可变类型 1、修改可变对象内部元素时,其内存地址不变 2、作为入参:函数内部修改它,会影响到外部的原始数据 |
列表 <class 'list'> 字典 <class 'dict'> 集合 <class 'set'> |
4、数据结构详解
#常用方法 type(object) #返回类型 isinstance(object, classinfo) len(object) #获取长度 max(object) #最大值 sum(object) #求和 del object #删除 sorted(object) #生成新对象返回,不改变原对象 range(start, stop[, step]) #生成数字序列 range(5) #生成0、1、2、3、4,包含开始0 range(5,7) #生成5、6,不包含结尾7 range(0, 6, 3):#生成0、3,间隔步长为3 pass #占位语句
|
数值 int:整数,比如3 float:小数,比如3.14 complex:复数,比如2+3j |
布尔 bool:True或False False:为空、0 |
字节串 bytes:由若干个字节组成,以字节为单位进行操作 byte_string = b"abc" 转换为str:b'abc'.decode() |
|
字符串 str:单引号或双引号括起来的任意文本 ---以字符为单位进行操作 str_demo = "abc" 转换为bytes:'abc'.encode() |
特殊运算符 +:连接两个字符串 *:重复字符串 in:判断字符串是否包含指定字符串
多行字符串 1、三引号:str_demo = """ xxx xxx """ 2、小括号:str_demo = ("abc" "abc") 3、续行符:str_demo = "abc"\ "abc" |
str_demo.find(str) #检测str是否包含在str_demo中,返回开始索引,没有返回-1 str_demo.index(str) #返回索引,没有返回exception str_demo.split(str="xx") #以str为分隔符分隔str_demo,返回一个list str.join(str_demo) #以str为连接符,连接str_demo中每个元素 #每个元素之间增加str,str可以为空("空") str_demo.replace(str1,str2) #把str1替换为str2 str_demo.strip(str) #去除str_demo中开头和结尾的str,默认为空格 #str_demo.strip(""):参数为空,不去除任何内容 #str_demo.strip(" "):参数为空格,去除空格 str_demo.isdigit() #检测是否为数字组成 |
|
元组 tuple:存放有序、不可修改的元素 创建:(value)、tuple(an iterable) tuple_demo = (1,2,3) |
支持索引、切片、相加、相乘 索引:从0开始 1、访问第一个元素:tuple_demo[0] 2、访问最后一个元素:tuple_demo[-1] 3、访问最后一个元素:tuple_demo[len(tuple_demo) - 1]
|
#切片:取指定索引范围的数据 tuple_demo[:] #取全部 tuple_demo[:3]#取索引0-2的数据,0可省略 tuple_demo[-3:]#取倒数第3个到末尾,末尾可省略 tuple_demo[::2]#每隔2个元素取1个(正步长表示从左到右) 5tuple_demo[::-1]#反转对象(负步长表示从右到左) |
|
列表 list:存放有序的元素 创建:[value]、list(an iterable) list_demo = ["abc"] |
支持索引、切片、相加、相乘 列表生成式:list(x * x for x in range(1,11) if x%2== 0) |
list_demo.append("efg") #添加元素到末尾 list_demo.insert(index, value)#插入元素到指定位置 list_demo.remove(value)#删除指定元素 list_demo.pop(index)#按照索引删除元素,为空时删除最后一个元素 list_demo.sort()#对原列表进行升序排序,reverse=True表示降序排序 list_demo.index(value)#根据元素获取索引 list_demo.count(value)#获取元素的数量 |
|
字典 dict:存放键值对 创建:{key:value}、dict(key=value) dict_demo = {"a":1} 1、key必须是不可变类型
|
不支持索引、切片、相加和相乘 |
dict_demo["b"] = 2 #添加 dict_demo["b"]、key_demo.get("b")#查询 dict_demo.get("b",value)#key->"b"不存在时,返回value dict_demo.setdefault("b",3)#key->"b"不存在时,添加("b",3);存在时不添加 dict_demo.pop("b")#删除key-value dict_demo.itmes()#获取键值对 for k,v in dict.items(): print("key:",k," value:",v) dict_demo.keys()#获取键 dict_demo.values()#获取值 |
|
集合 set:存放无序、不重复的元素 创建:{key}、set(an iterable) set_demo = {1,2,3} |
不支持索引、切片、相加和相乘 |
set_demo.add(key) #添加 set_demo.remove(key)#删除,不存在会报错 set_demo.discard(key)#删除,不存在不会报错 |
5、控制语句
| 判断语句 | 从上往下判断,如果某个为True,则执行紧随其后的代码块 |
if 表达式 1: 代码块 1 elif 表达式 2: 代码块 2 else: 代码块 n |
| while循环语句 |
只要条件为真,就不断循环 1、continue:跳过这次循环,进入下次循环 2、break:退出整个循环 |
while 条件表达式: 代码块 |
| for循环语句 | 逐个获取序列中的元素,为空时退出循环 |
for 迭代变量 in 字符串|元组|列表|字典|集合: 代码块 |
本文来自博客园,作者:Fēngwèi,转载请注明原文链接:https://www.cnblogs.com/fengwei-blogs/p/21066969

浙公网安备 33010602011771号