Python基础知识
了解Python
学前须知:
Python在当今的市场越来越火爆. 随着国家把大数据, 人工智能定位成国家弯道超车的技术制高点, 可以看到这样的火爆市场仅仅只是开始. 对于即将学习Python的未来Python从业者来说, Python这门编程语言的前世今生是我们有必要去了解的.
一、Python发展背景
- Python的作者,Guido von Rossum(吉多·范·罗苏姆,中国Python程序员都叫他 龟叔),荷兰人。1982年,龟叔从阿姆斯特丹大学获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,虽然拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的事情。
二、Python语言的诞生
- 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了 :类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
- Python语法很多来自C,但又受到ABC语言的强烈影响。来自ABC语言的一些规定直到今天还富有争议,比如强制缩进。 但这些语法规定让Python容易读。另一方面,Python聪明的选择服从一些惯例,特别是C语言的惯例,比如回归等号赋值。龟叔认为,如果“常识”上确立的东西,没有必要过度纠结。
- Python从一开始就特别在意可拓展性。Python可以在多个层次上拓展。从高层上,你可以直接引入. py文件。在底层,你可以引用C语言的库。Python程序员可以快速的使用Python写. py文件作为拓展模块。但当性能是考虑的重要因素时,Python程序员可以深入底层,写C程序,编译为.so文件引入到Python中使用。Python就好像是使用钢构建房一样,先规定好大的框架。而程序员可以在此框架下相当自由的拓展或更 改。
三、Python适用人群
- Python这种简单易学的设计初衷就决定了它的适用人群。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-suQzZ4ao-1690804476025)(C:\Users\23130\AppData\Roaming\Typora\typora-user-images\1690799341674.png)]
四、Python应用场景
- Web应用开发
- 操作系统管理、服务器运维的自动化脚本
- 网络爬虫
- 科学计算
- 桌面软件
- 服务器软件(网络软件)
- 游戏
- 构思实现,产品早期原型和迭代
注释
一、什么是注释
注释:在程序代码中对程序代码进行解释说明的文字
作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够大大增加程序的可读性。
- 看以下代码实例(未使用注释)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0cp2mCsv-1690804476026)(file:///D:/gongxiang%20data/jichu/01-%E5%9F%BA%E7%A1%80%E8%AE%B2%E4%B9%89/file/Images/01-%E7%AC%AC1%E5%A4%A9-1.gif)]
- 看以下代码实例(使用注释)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MB3RM15P-1690804476026)(file:///D:/gongxiang%20data/jichu/01-%E5%9F%BA%E7%A1%80%E8%AE%B2%E4%B9%89/file/Images/01-%E7%AC%AC1%E5%A4%A9-2.png)]
通过对比有注释的代码和没有注释的代码可以发现
- 有注释的代码:不需要逐行进行阅读代码,就可以知道代码的作用和功能
- 没有注释的代码:需要进行阅读才可以知道代码到底什么作用有什么功能
二、注释的分类
- 单行注释
以#开头,#右边的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用
# 我是注释,可以在里面写一些功能说明之类的哦
print('Hello World')
- 多行注释
“”“内容”“”, 三个引号引起来的内容作为对代码的解释说明, 这里的解释往往比较详尽,行数较多(三个单引号或者三个双引号都可以)
'''
我是多行注释,可以写很多行的功能说明
下面的代码完成,打印输出Hello World
'''
print('Hello World')
单行注释:解释说明的文字只需要一行来书写
多行注释:解释说明的文字需要很多行来书写
变量以及类型
学前须知:
-
所谓变量,可以理解为‘菜篮子’,买菜需要把菜放到菜篮子里,那么程序中的数据就需要放到变量里。
-
程序就是用来处理数据的,而变量就是用来存储数据的
一、变量的类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-41sPD6Nh-1690804476026)(C:\Users\23130\AppData\Roaming\Typora\typora-user-images\1690800744712.png)]
二、查看变量的类型
可以使用type(变量的名字),来查看变量的类型
# 定义一个数字类型变量num
num = 10
# 这里使用type就可以查看num的具体类型
type(num)
# <class 'int'>
三、数据大小单位换算
变量是用来存储数据的,数据也是有大小的,在这里我们科普以下数据大小的单位换算。
字节(byte):8个二进制为一个字节(B)
计算机存储单位一般用B,KB,MB,GB,TB它们之间的关系是:
- 1B(Byte 字节)=8bit
- 1KB(Kilobyte 千字节)=1024B
- 1MB(Mega byte 兆字节 简称‘兆’)=1024KB
- 1GB(Giga byte 吉字节 又称‘千兆’)=1024MB
- 1TB(Tera byte 万亿字节 太字节)=1024GB,其中1024=2^10(2的10次方)
标识符和关键字
一、标识符命名规则
标识符:现阶段学习的变量名,后期会学习的函数名,类名这些都是标识符,简单来说就是程序中所有的名字的总称就是标识符。
- 见名知意
- 由字母、下划线、和数字组成,且数字不能开头
- 区分大小写
- 不能和关键字重复
二、常见命名方法
-
小驼峰式命名法(lower camel case): 第一个单词以小写字母开始, 第二个单词的首字母大写
例如:myName、aDog
-
大驼峰式命名法(upper camel case): 每一个单词的首字母都采用大写字母
例如:FirstName、LastName
-
还有一种命名法是用下划线“_”来连接所有的单词
例如: send_buf, 一般情况下下划线命名方式是Python推荐的命名方式, 关于Python更详细的命名规则可以查阅PEP8标准
三、什么是关键字
关键字是python语言已经使用的标识符,所以不允许开发者自己定义和关键字相同的名字的标识符.
ps: 就像110这个电话号码已经给警察使用了, 个人的手机号是不能使用110一个道理
输出
一、普通的输出
- 生活中的‘输出’
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vsm9hAHW-1690804476026)(file:///D:/gongxiang%20data/jichu/01-%E5%9F%BA%E7%A1%80%E8%AE%B2%E4%B9%89/file/Images/%E8%BE%93%E5%87%BA.png)]
- 软件中的‘输出’
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eL7a09Uu-1690804476026)(file:///D:/gongxiang%20data/jichu/01-%E5%9F%BA%E7%A1%80%E8%AE%B2%E4%B9%89/file/Images/01-%E7%AC%AC1%E5%A4%A9-13.jpg)]
- Python中的‘输出’
# 输出函数pritn的使用
print('hello world')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zqt2rbA7-1690804476027)(C:\Users\23130\AppData\Roaming\Typora\typora-user-images\1690802309390.png)]
二、格式化输出
在程序中,看到了%这样的操作符,就是Python中格式化输出。
格式化输出的作用:可以在不改变print函数中的数据的情况下就可以输出不同的数据。
age = 18
name = 'xiaohua'
print('我的姓名是%s,年龄是%d' % (name, age))
三、常用的格式符号
下面是完整的,可以与%符号搭配使用的格式符号列表:
格式符号 | 转换 |
---|---|
%c | 字符 |
%s | 字符串 |
%d | 有符号十进制整数 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写字母0x) |
%X | 十六进制整数(大写字母0X) |
%f | 浮点数 |
%e | 科学计数法(小写‘e’) |
%E | 科学计数法(大写‘e’) |
%g | %f和%e的简写 |
%G | %f和%E的简写 |
四、换行输出
在输出的时候,如果有\n
那么,此时\n
后的内容会在另外一行显示
print('123456--------') # 会一行显示
print('123456\n--------') # 一行显示123456,另一行显示--------
五、f-string输出
f-strings 提供一种简洁易读的方式, 可以在字符串中包含 Python 表达式. f-strings 以字母 ‘f’ 为前缀, 格式化字符串使用一对单引号、双引号、三单引号、三双引号. 格式化字符串中。
name = '老铁'
age = 33
print(f'名字:{name},年龄:{age}')
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ic1ZjgT2-1690804476027)(C:\Users\23130\AppData\Roaming\Typora\typora-user-images\1690803368124.png)]
输入
一、input()函数
在Python中,获取键盘输入的数据的方法是采用 input 函数(至于什么是函数,咱们以后的章节中讲解),那么这个 input 怎么用呢?
看如下实例:
password = input('请输入密码:')
print('您刚刚输入的密码是:%s' % password)
运行结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cOfmuTpT-1690804476027)(C:\Users\23130\AppData\Roaming\Typora\typora-user-images\1690803556250.png)]
注意:
- input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示
- input()在从键盘获取了数据以后,会存放到等号右边的变量中
- input()会把用户输入的任何值都作为字符串来对待
运算符
一、算术运算符
下面以a=10,b=20为例进行计算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 a + b 输出结果 30 |
- | 减 | 得到负数或是一个数减去另一个数 a - b 输出结果 -10 |
* | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 |
/ | 除 | b / a 输出结果 2 |
// | 取整除 | 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
% | 取余 | 返回除法的余数 b % a 输出结果 0 |
** | 指数 | a**b 为10的20次方, 输出结果 100000000000000000000 |
注意:混合运算时,优先级顺序为: **
高于 '*/%//高于
±,为了避免歧义,建议使用
()` 来处理运算符优先级。
并且,不同类型的数字在进行混合运算时,整数将会转换成浮点数进行运算。
print(10 + 5.5 * 2)
# 21.0
print(10 + (5.5 * 2))
# 21.0
二、赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | 把 = 号右边的结果 赋给 左边的变量,如 num = 1 + 2 * 3,结果num的值为7 |
# 单个变量赋值
num = 10
print(10)
# 10
# 多个变量赋值
num1, num2, f1, srt1 = 100, 200, 3.14, 'hello'
print(num1)
# 100
print(num2)
# 200
print(f1)
# 3.14
print(str1)
# hello
- 符合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
常用的数据类型转换
一、数据类型转化
在程序中往往会出现需要数据类型转化的需求
ps: input()函数默认接受到的是str(字符串)数据类型数据, 而我们需要input()函数给我们一个数字类型的数据. 这时候我们就可以把接受到的数据进行数据类型转化.
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
float(x ) | 将x转换为一个浮点数 |
complex(real [,imag ]) | 创建一个复数,real为实部,imag为虚部 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个Unicode字符 |
ord(x ) | 将一个字符转换为它的ASCII整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
bin(x ) | 将一个整数转换为一个二进制字符串 |
# int():将数据转化为int类型
str1 = '10'
# int()默认按10进制转换后显示
num1 = int(str1)
print(num1)
10
# int()处理浮点数,只留下整数部分,舍弃小数部分(并不是四舍五入操作)
num2 = int(3.74)
print(num2)
# 3
ex(x ) | 将一个整数转换为一个十六进制字符串 |
| oct(x ) | 将一个整数转换为一个八进制字符串 |
| bin(x ) | 将一个整数转换为一个二进制字符串 |
# int():将数据转化为int类型
str1 = '10'
# int()默认按10进制转换后显示
num1 = int(str1)
print(num1)
10
# int()处理浮点数,只留下整数部分,舍弃小数部分(并不是四舍五入操作)
num2 = int(3.74)
print(num2)
# 3