初识python
初识python介绍python相较于shell优点python更强大,功能丰富,执行效率比shell高、python可以跨平台,可移植性好,标椎统一python模块丰富,多种应用场景顺应开发型运维的趋势,更高薪python起源python的创始人为Guido von Rossum(吉多·范·罗苏姆),俗称”龟叔“,荷兰人。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开
初识python
介绍
python相较于shell优点
- python更强大,功能丰富,执行效率比shell高、
- python可以跨平台,可移植性好,标椎统一
- python模块丰富,多种应用场景
- 顺应开发型运维的趋势,更高薪
python起源
- python的创始人为Guido von Rossum(吉多·范·罗苏姆),俗称”龟叔“,荷兰人。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者
- ABC是由Guido参加设计的一种教学语言。是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido 认为是其非开放(封闭,不开源)造成的。Guido决心在Python中避免这一错误。同时他还想实现在ABC 中闪现过但未曾实现的东西。就这样,Python在Guido手中诞生了
- 吉多有⼀句名⾔:Life is short, I need python(⼈⽣苦短,我⽤python!) 。同⼀样问题,⽤不同的语⾔解决,代码量差距还是很多的,⼀般情况下Python是Java的1/5,所 以说⼈⽣苦短,我⽤Python
python优缺点
优点:
- 简单,易学,易懂,开发效率高:Python容易上手,语法较简单。在linux上和写shell一样,拿着vi都可以写,直接就可以运行
- 免费、开源:运维用的大部分软件都是开源
- 可移植性,跨平台:Python已经被移植在许多不同的平台上,Python程序无需修改就可以在Linux,Windows,mac等平台上运行
- 可扩展性:如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们
- 丰富的库:Python的库及其丰富,它可以帮助你处理及应对各种场景应用
- 规范的代码:Python采用强制缩进的方式使得代码具有极佳的可读性
缺点:
- 执行效率慢 : 这是解释型语言的通病,同时这个缺点也被计算机的性能越来越强所弥补。有些场景慢个几微秒几毫秒,一般也感觉不到。
- 代码不能加密: 这也是解释型语言的通有毛病,当然也有一些方法可以混淆代码(解决方法: 参考优点的第4条)
应用场景
-
操作系统管理、服务器运维的自动化脚本:一般说来,Python编写的系统管理脚本在可读性、性能、代码重用度、扩展性几方面都优于普通的shell脚本
-
Web开发:Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的通信。一些Web框架,如Django,TurboGears,web2py,Zope等,可以让程序员轻松地开发和管理复杂的Web程序
-
服务器软件(网络软件):Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫。第三方库Twisted支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件
-
游戏:很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型
-
科学计算:NumPy,SciPy,Matplotlib可以让Python程序员编写科学计算程序
-
其它领域:无人驾驶,人工智能等
解释型语言&编译型语言
- 计算机只能识别机器语言(如:01010101001这种), 程序员不能直接去写01这种代码,所以要程序员所编写的程序语言翻译成机器语言。将其他语言翻译成机器语言的工具,称之为编译器。
- 编译器翻译的方式有两种,一种是编译,一种是解释。区别如下:
- 正因为这样的区别,所以解释型语言开发效率高,但执行慢和无法加密代码
python版本
- 在centos7上默认自带的python版本为2.7.5
[root@server1 ~]# python --version
Python 2.7.5
-
python2在2020年终止维护;python3为主流版本
-
编写第一个python脚本
[root@server1 ~]# vim 1.py
[root@server1 ~]# cat 1.py
[root@server1 ~]# cat 1.py
#!/usr/bin/python
#-*- coding:utf-8 -*-
print("hello world")
print("你好")
执行方法1
[root@server1 ~]# python 1.py
hello world
你好
执行方法2
[root@server1 ~]# chmod 755 1.py
[root@server1 ~]# ./1.py
hello world
你好
在python2中,
print "hello world"
等同于print("hello world")
但在python3中,
print "hello world"
不允许使用在python2中,如果想输出中文,需要指定字符格式
#-*- coding: utf-8 -*-
- python交互式使用
[root@server1 ~]# python
Python 2.7.5 (default, Nov 16 2020, 22:23:17)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello linux")
hello linux
>>>
相关软件安装
python3安装
[root@server1 ~]# yum install zlib-devel openssl openssl-devel gcc
[root@server1 ~]# yum install -y lrzsz
[root@server1 ~]# rz
[root@server1 ~]# tar xf Python-3.9.9.tar.xz -C /usr/local
[root@server1 ~]# cd /usr/local/Python-3.9.9/
[root@server1 Python-3.9.9]# ./configure --enable-optimizations
[root@server1 Python-3.9.9]# make
[root@server1 Python-3.9.9]# make install
[root@server1 ~]# ls /usr/bin/pip3.6
/usr/bin/pip3.6
[root@server1 ~]# ls /usr/local/bin/python3.9
/usr/local/bin/python3.9
pycharm安装
- PyCharm是一种Python IDE(Integrated Development Environment, 集成开发环境)。它带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制
- 官网下载地址:http://www.jetbrains.com/pycharm/download/#section=linux
- 专业版: 功能全,需要收费,但可以试用30天
- 社区版: 免费版,学习基础够用了
[root@server1 ~]# rz
[root@server1 ~]# tar xf pycharm-professional-2021.2.3.tar.gz -C /usr/local/
[root@server1 ~]# mkdir /python_project_day1
[root@server1 ~]# nohup sh /usr/local/pycharm-2018.2.4/bin/pycharm.sh &
print函数使用
换行|不换行打印
-
Python程序由多个逻辑行构成,一个逻辑行不一定为一个物理行(人眼看到的行)
-
换行打印hello world
help(print()) #帮助
print("hello")
print("world") #直接打印
print("hello\nworld") #换行打印
print('''hello
world''') #三引号打印:物理行等同于逻辑行
print("hello",end='\n')
print("world") #end='内容',上下两行连接:hello内容world
- 不换行打印hello world
print('hello world') #直接打印
print('''hello world''') #三引号打印
print('hello', end=' ')
print('world') #通过空格连接hello world
彩色打印
- 使用VT100控制码实现彩色打印
print("\033[31;1;31m红色\033[0m")
print("\033[31;1;32m绿色\033[0m")
print("\033[31;1;33m黄色\033[0m")
print("\033[31;1;34m蓝色\033[0m")
print("\033[31;1;35m紫色\033[0m")
print("\033[31;1;36m青色\033[0m")
注释
在程序中对某些代码进行标注说明 ,增强程序的可读性
- 单行注释
# print('hello world')
print('hello world') # 说明
- 多行注释:三引号
'''print('hello world')
print('hello world')'''
框选范围,使用ctrl+/可以批量注释
不选定范围,使用ctrl+/可以注释光标所在行
已注释的内容,再次使用ctrl+/可以解开注释
代码规范PEP
-
Python官方提供有一系列PEP(Python Enhancement Proposals) 文档。其中第 8 篇文档专门针对Python 的代码格式给出了建议,也就是俗称的 PEP 8
-
中文文档:http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/
变量
变量创建
-
命名规则:
- 变量名只能是字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 变量名要有见名知义的效果, 如UserName,user_name,驼峰命名法
- 变量名区分大小写
- 关键字不能声明为变量名[‘False’, ‘None’, ‘True’, ‘and’,‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘fifinally’, ‘for’, ‘from’, ‘global’, ‘if’,‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
import keyword print(keyword.kwlist) #导入模块,打印关键字列表
-
变量的创建
a = 1
print(id(a))
a = 2
print(id(a))
b = 1
print(id(b))
#执行结果
1487831152
1487831184
1487831152
id()函数用于获取对象的内存地址
对于多个不可变类型的对象,值相同,id相同(说明它们指向同一个内存空间)
- 变量值的交换
a, b = 1, 2
a, b = b, a
print(a,b)
#执行结果
2 1
变量的类型
- python是强类型的动态解释型语言
- 强类型:不允许不同类型相加
- 动态:不用声明数据类型,变量的数据类型由给定的值决定
name = 'zhangsan'
age = 20
height = 1.8
marry = True
print(type(name))
print(type(age))
print(type(height))
print(type(marry))
#执行结果
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
type()查看对象的类型
python数据类型
六大数据类型
- 数字
- int 整型(1, 2, -1, -2)
- float 浮点型(34.678)
- bool 布尔型(True/False)
- complex 复数(4+3J, 不应用于常规编程,这种仅了解一下就好
- 字符串:str 单引号和双引号内表示的内容为字符串 “hello world" “12345”
- 列表:list 使用中括号表示 [1, 2, 3, 4]
- 元组:tuple 使用小括号表示 (1, 2, 3, 4)
- 字典:dict 使用大括号表示,存放key-value键值对 {“a”:1, “b”:2, “c”:3}
- 集合:set 也使用大括号表示,但与字典有所不同 {1, 2, 3, 4}
类型转换
转换函数 | 说明 |
---|---|
int(xxx) | 将xxx转换为整数 |
float(xxx) | 将xxx转换为浮点型 |
str(xxx) | 将xxx转换为字符串 |
list(xxx) | 将xxx转换为列表 |
tuple(xxx) | 将xxx转换为元组 |
dict(xxx) | 将xxx转换为字典 |
set(xxx) | 将xxx转换为集合 |
chr(xxx) | 把整数[0-255]转成对应的ASCII码 |
ord(xxx) | 把ASCII码转成对应的整数[0-255] |
输入输出
输入
- 通过input输入的值的类型全为字符型
name = input("请输入你的名字:")
age = input("请输入你的年龄:")
print(name)
print(age)
#执行结果
请输入你的名字:lisi
请输入你的年龄:25
lisi
25
输出
普通输出
print("*"*10)
#执行结果
**********
格式化输出
- 字符串拼接
name = input("请输入你的名字:")
age = input("请输入你的年龄:")
print(name+"的年龄为"+age)
#执行结果为
请输入你的名字:lisi
请输入你的年龄:23
lisi的年龄为23
- 不同类型拼接
name = input("请输入你的名字:")
age = int(input("请输入你的年龄:"))
print("%s五年后的年龄为%d"%(name, age+5))
#执行结果
请输入你的名字:lisi
请输入你的年龄:23
lisi五年后的年龄为28
操作符 | 说明 |
---|---|
%s | 字符串 |
%d | 整数 |
%f | 浮点数 |
%% | 输出 % |
- 不考虑类型拼接
name = input("请输入你的名字:")
age = int(input("请输入你的年龄:"))
print("{}五年后的年龄为{}".format(name, age+5))
#执行结果
请输入你的名字:lisi
请输入你的年龄:23
lisi五年后的年龄为28
- 结合索引
name = input("请输入你的名字:")
age = int(input("请输入你的年龄:"))
print("{0},五年后的{0}年龄为{1}".format(name, age+5))
#执行结果
请输入你的名字:lisi
请输入你的年龄:23
lisi,五年后的lisi年龄为28
运算符
算数运算符
算术运算符 | 描述 | 实例 | 补充 |
---|---|---|---|
+ | 加法 | 1+2=3 | |
- | 减法 | 5-1=4 | |
* | 乘法 | 3*5=15 | |
/ | 除法 | 10/2=5 | |
// | 整除 | 10//3=3 | 不能整除的只保留整数部分 |
** | 求幂 | 2**3=8 | |
% | 求余(取模) | 10%3=1 | 得到除法的余数 |
赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c=a+b将a+b的运算结果赋值为c |
+= | 加法赋值运算符 | 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 |
比较运算符
运算符 | 描述 | 实例 |
---|---|---|
== | ⽐较对象是否相等 | (a==b)返回False |
!= | ⽐较两个对象是否不相等 | (a!=b)返回true |
<> | ⽐较两个对象是否不相等 | (a<>b)返回true |
> | 返回x是否⼤于y | (a>b)返回False |
< | 返回x是否⼩于y | (a<b)返回true |
>= | 返回x是否⼤于等于y | (a>=b)返回False |
<= | 返回x是否⼩于等于y | (a<=b)返回true |
逻辑运算符
逻辑运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | x与y都为True,则返回True; x与y任一个或两个都为False,则返回False |
or | x or y | x与y任一个条件为True,则返回True |
not | not x | x为True,返回False; x为False,返回True |
在没有 () 的情况下 not 优先级⾼于 and,and 优先级⾼于 or,即优先级关系为**()>not>and>or**,同⼀优先级从左往右计算
成员运算符
成员运算符 | 描述 | 判定 |
---|---|---|
in | x 在 y 序列中 | 如果 x 在 y 序列中返回 True; 反之,返回False |
not in | x 不在 y 序列中 | 如果 x 不在 y 序列中返回 True; 反之,返回False |
身份运算符
身份运算符 | 描述 | 补充 |
---|---|---|
is | 引用自一个对象 | 类似 id(x) == id(y) |
is not | 引用自不同对象 | 类似 id(a) != id(b) |
运算符优先级
- 算术 > 比较 > 逻辑 > 赋值
| ---------- | --------------- | ---------------------------------------------- |
| in | x 在 y 序列中 | 如果 x 在 y 序列中返回 True; 反之,返回False |
| not in | x 不在 y 序列中 | 如果 x 不在 y 序列中返回 True; 反之,返回False |
身份运算符
身份运算符 | 描述 | 补充 |
---|---|---|
is | 引用自一个对象 | 类似 id(x) == id(y) |
is not | 引用自不同对象 | 类似 id(a) != id(b) |
运算符优先级
- 算术 > 比较 > 逻辑 > 赋值
更多推荐
所有评论(0)