Python入门操作


一、安装部署Python

[xiaobai@python] yum groupinstall "Development Tools" -y   #源码安装软件的开发工具
[xiaobai@python] yum -y install  zlib-devel bzip2-devel openssl-devel  sqlite-devel readline-devel  libffi-devel   #下载一些依赖工具

python官网找python3数据包python官网


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
鼠标右键点击复制链接地址,用wget下载,这里下载的是第二个

[xiaobai@python] wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz
[xiaobai@python] ls
Python-3.7.6.tar.xz
[xiaobai@python] tar -xf Python-3.7.6.tar.xz
[xiaobai@python] vim Python-3.7.6/Modules/Setup.dist 
#在文件中做如下操作

在这里插入图片描述
在这里插入图片描述

[xiaobai@python] cd Python-3.7.6
[xiaobai@python Python-3.7.6] ./configure --enable-shared   #--enable-shared配置共享库
[xiaobai@python Python-3.7.6] make -j 4 && make install

#make完成后回到/目录下
[xiaobai@python] echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib" >/etc/profile.d/python3_lib.sh
[xiaobai@python] echo "/usr/local/lib" > /etc/ld.so.conf.d/python3.conf
[xiaobai@python] ldconfig
[xiaobai@python] source /etc/profile
[xiaobai@python] python3 -V
Python 3.7.6
[xiaobai@python] pip3 -V
pip 19.2.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

配置第三方本地源

[xiaobai@python] mkdir ~/.pip
[xiaobai@python] vim ~/.pip/pip.conf
[global]
index-url=https://mirrors.aliyun.com/pypi/simple

#测试
[xiaobai@python] pip3 install ipython

在这里插入图片描述

二、数据类型

Python3 中有六个标准的数据类型:

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

其中不可变类型:Number(数字)、String(字符串)、Tuple(元组)
可变类型:List(列表)、Dictionary(字典)、Set(集合)


1、数字

Python3 中支持的数字有 int(整数)、float(浮点数)、bool(布尔值)、complex(复数),数值类型的赋值和计算都是很直观的。

#可以使用内置函数 type() 查询变量所指的对象类型
>>> a, b, c, d = 1, False, 3.2, 3+6j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'bool'> <class 'float'> <class 'complex'>

#也可以使用 isinstance 来判断
>>> a ,b = 2 , True
>>> isinstance(a, int)
True
>>> isinstance(a, bool)
False
>>> isinstance(b, bool)
True

注意:type()不会认为子类是一种父类类型,而isinstance()会认为子类是一种父类类型。

>>> class A:
...     pass   #pass语句是用来占位的,没有实际意义,前面要有缩进
...     
>>> class B(A):
...     pass
... 
>>> isinstance(A(), A)
True
>>> type(A()) == A 
True
>>> isinstance(B(), A)
True
>>> type(B()) == A
False

Python3 中,bool 是 int 的子类,所以True 和 False 有相对应的整数,True1,False0,可以通过 is 来判断类型,Python2 中是没有布尔型(bool)的,它用数字 0 表示 False,用 1 表示 True。

>>> issubclass(bool, int) 
True
>>> True==1
True
>>> False==0
True
>>> True+2
3
>>> False+2
2
>>> 1 is True
False
>>> 0 is False
False

2、字符串

Python中的字符串用单引号或双引号引用起来,同时还可以使用反斜杠 \ 转义特殊字符, Pyhon字符串中的每一个字符就相当于一个索引, 以下是截取 Python 字符串的方法, 注意:Python 没有单独的字符类型,一个字符就是长度为1的字符串

------
Python中从前向后的索引是0开头,从后向前则是-1开头
 0  1  2  3  4  5  6
 x  i  a  o  b  a  i
-7 -6 -5 -4 -3 -2 -1
------
>>> str = "xiaobai"
>>> print(str)   打印字符串
xiaobai

#索引
>>> print(str[0:5])   从索引0开始到索引5的字符(不包括索引5),打印第一个到第五个字符
xiaob
>>> print(str[0:-1])   从索引0开始到索引-1的字符(不包括索引-1),打印第一个到倒数第一个字符
xiaoba
>>> print(str[0])   打印索引0的字符,打印第一个字符
x
>>> print(str[2:5])   打印索引2到索引5的字符(不包括索引5),打印第三个到第五个字符
aob
>>> print(str[3:])   打印索引3及以后的所有字符,打印第四个及以后的所有字符
obai

#转义符
>>> print('xiao\nbai')   加上n前加上\ 后就成为了换行符
xiao
bai
>>> print(r'xiao\nbai')   可以在最前面加上r不让反斜杠发生转义 
xiao\nbai

#拼接复制
------
加号+ 可以连接两个字符串, 星号* 表示复制当前字符串,与之结合的数字为复制的次数
------
>>> print(str * 3)   把字符串复制三次输出出来
xiaobaixiaobaixiaobai
>>> print(str + "zhenshuai")   在字符串后面拼接新的字符串"zhenshuai"
xiaobaizhenshuai
>>> print(str + "zhenshuai" * 2)
xiaobaizhenshuaizhenshuai
>>> print((str + "zhenshuai") * 2)
xiaobaizhenshuaixiaobaizhenshuai

#字符
>>> print(str[0], str[4])
x b
>>> print(str[-3], str[-7])
b x

Python 字符串不能被改变。向一个索引位置赋值,比如str[0] = 'q’会导致错误

3、列表

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。列表是写在方括号 [ ] 之间、用逗号分隔开的元素列表。与字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表的操作和字符串基本相同,索引的格式也是基本相同
>>> list = ['abcd', 789, 3.14, 'xiao', 52.6]
>>> tinylist = [123, 'bai']
>>> print(list)
['abcd', 789, 3.14, 'xiao', 52.6]
>>> print(list[0])
abcd
>>> print(list[1:3])
[789, 3.14]
>>> print(list[2:])
[3.14, 'xiao', 52.6]
>>> print(tinylist * 2)
[123, 'bai', 123, 'bai']
>>> print(list + tinylist)
['abcd', 789, 3.14, 'xiao', 52.6, 123, 'bai']

------
与Python字符串不一样的是,列表中的元素是可以改变的
------

>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> print(a)
[9, 2, 3, 4, 5, 6]
>>> a[2:5] = [13, 14, 15]
>>> print(a)
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = []
>>> print(a)
[9, 2, 6]

------
Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串
------

>>> xb = ['x', 'i', 'a', 'o', 'b', 'a', 'i']
>>> print(xb[1:4:2])   打印索引1到索引4步长为2
['i', 'o']

列表(list)内置了很多方法,如 append()、pop() 等

4、元组

元组和列表类似,但是元组的元素是不能被修改的,元组写在小括号里,用逗号隔开

>>> tuple = ['abcd', 789, 3.14, 'xiao', 52.6]
>>> tinytuple = [123, 'bai']
>>> print(tuple)
['abcd', 789, 3.14, 'xiao', 52.6]
>>> print(tuple[0])
abcd
>>> print(tuple[1:3])
[789, 3.14]
>>> print(tuple[2:])
[3.14, 'xiao', 52.6]
>>> print(tinytuple * 2)
[123, 'bai', 123, 'bai']
>>> print(list + tinytuple)
['abcd', 789, 3.14, 'xiao', 52.6, 123, 'bai']

>>> tup = (1, 2, 3, 4, 5, 6)
>>> print(tup[0])
1
>>> print(tup[1:5])
(2, 3, 4, 5)
>>> tup[0] = 11  # 修改元组元素的操作是非法的
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

>>> tup1 = ()    # 空元组
>>> tup2 = (20,) # 一个元素,需要在元素后添加逗号

虽然元组的元素不可改变,但其元素里可以包含可变的对象,比如列表。string、list 和 tuple 都属于 sequence(序列)

5、集合

集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员, 集合的基本功能是进行成员关系测试和删除重复元素, 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

------
集合有两种创建方式
parame = {value01,value02,...}   方式一
set(value)   方式二
------

>>> sites = {'xiaobai', 'xiaohu', 'xiaoming', 'niutou', 'xiaobai', 'wuqi'}
>>> print(sites)    重复的元素会被自动去掉
{'xiaoming', 'xiaohu', 'xiaobai', 'niutou', 'wuqi'}

>>> if 'xiaobai' in sites :
...     print('xiaobai 在集合中')    #四个空格作为缩进
... else :
...     print('xiaobai 不在集合中')
... 
xiaobai 在集合中    #输出结果

set还可以进行集合运算
>>> a = set('adgasf')
>>> b = set('sagrd')
>>> print(a)
{'d', 's', 'a', 'g', 'f'}
>>> print(a - b)     # a 和 b 的差集
{'f'}
>>> print(a | b)     # a 和 b 的并集
{'r', 'd', 's', 'a', 'g', 'f'}
>>> print(a & b)     # a 和 b 的交集
{'s', 'd', 'a', 'g'}
>>> print(a ^ b)     # a 和 b 中不同时存在的元素
{'r', 'f'}

6、字典

字典(dictionary)是Python中另一个非常有用的内置数据类型, 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
字典是一种映射类型,字典用 { } 标识,它是一个无序的键(key):值(value) 的集合, 键(key)必须使用不可变类型,在同一个字典中,键(key)必须是唯一的

>>> dict = {}
>>> dict['one'] = "1 - 小白"
>>> dict[2]     = "2 - xiaobai"
>>> print(dict)
{'one': '1 - 小白', 2: '2 - xiaobai'}
>>> print (dict['one'])    # 输出dict中键为'one'的值
1 - 小白
>>> print (dict[2])        # 输出dict中键为2的值
2 - xiaobai

>>> tinydict = {'name': 'bai','code':1, 'site': 'www.xiaobai.plus'}
{'name': 'bai', 'code': 1, 'site': 'www.xiaobai.plus'}
>>> print (tinydict.keys())     # 输出tinydict所有键
dict_keys(['name', 'code', 'site'])
>>> print (tinydict.values())   # 输出tinydict所有值
dict_values(['bai', 1, 'www.xiaobai.plus'])

------
构造函数dict()可以直接从键值对序列中构建字典, 字典类型有很多内置的函数, 例如clear()、keys()、values()------
>>> dict([('Xiaobai', 1), ('Google', 2), ('Taobao', 3)])
{'Xiaobai': 1, 'Google': 2, 'Taobao': 3}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(Xiaobai=1, Google=2, Taobao=3)
{'Xiaobai': 1, 'Google': 2, 'Taobao': 3}

三、Python运算符

1、算术运算符

python中可以直接用数字进行加减乘除, 这里我们给a, b赋值也可以进行运算
-------------
>>> a = 2
>>> b = 5

>>> a + b     a + b的结果, 也就是2 + 5
7
>>> a - b     a - b的结果, 也就是2 - 5
-3
>>> b // a    b ÷ a取整数的结果, 也就是5 ÷ 2 = 21, 取整数2
2
>>> b % a     b ÷ a取余数的结果, 也就是5 ÷ 2 = 21, 取余数1
1
>>> b / a     b ÷ a的结果, 也就是5 ÷ 2
2.5
>>> a * b     a × b的结果, 也就是2 × 5
10
>>> a ** b    a的b次方, 也就是25次方
32

2、比较运算符

>>> a = 3
>>> b = 6

>>> a == b     a 等于 b做判断, 正确返回True, 错误返回False
False
>>> a == 3     a 等于 3做判断, 正确返回True, 错误返回False
True
>>> a != b     a 不等于 b做判断, 正确返回True, 错误返回False
True
>>> a > b      a 大于 b做判断, 正确返回True, 错误返回False
False
>>> a < b      a 小于 b做判断, 正确返回True, 错误返回False
True
>>> a >= b     a 大于或等于 b做判断, 正确返回True, 错误返回False
False
>>> a <= b     a 小于或等于 b做判断, 正确返回True, 错误返回False
True

3、赋值运算符

>>> a = 2
>>> b = 5
>>> c = a + b      给c赋值可以是运算的结果, 也可以直接赋值
>>> print(c)
7
>>> c += a         等同于c = c + a, 重新给c赋值
>>> print(c)
9
>>> c -= a         等同于c = c - a, 重新给c赋值
>>> print(c)
7
>>> c *= a         等同于c = c × a, 重新给c赋值
>>> print(c)
14
>>> c /= a         等同于c = c ÷ a, 重新给c赋值
>>> print(c)
7.0
>>> c %= a         等同于c = c ÷ a, 取余数重新给c赋值
>>> print(c)
1.0
>>> b **= a        等同于b = b的a次方, 重新给b赋值
>>> print(b)
25
>>> b //= a        等同于c = c ÷ a, 取整数重新给c赋值
>>> print(b)
12

4、逻辑运算符

>>> a = 5
>>> b = 10

>>> if ( a and b ):
...    print ("1 - 变量 a 和 b 都为 true")
... else:
...    print ("1 - 变量 a 和 b 有一个不为 true")
... 
1 - 变量 a 和 b 都为 true

>>> if ( a or b ):
...    print ("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")
... else:
...    print ("2 - 变量 a 和 b 都不为 true")
... 
2 - 变量 a 和 b 都为 true,或其中一个变量为 true

-----------------------------------------
>>> a = 0      修改a的值

>>> if ( a and b ):
...    print ("3 - 变量 a 和 b 都为 true")
... else:
...    print ("3 - 变量 a 和 b 有一个不为 true")
... 
3 - 变量 a 和 b 有一个不为 true

>>> if ( a or b ):
...    print ("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")
... else:
...    print ("4 - 变量 a 和 b 都不为 true")
... 
4 - 变量 a 和 b 都为 true,或其中一个变量为 true

>>> if not( a and b ):
...    print ("5 - 变量 a 和 b 都为 false,或其中一个变量为 false")
... else:
...    print ("5 - 变量 a 和 b 都为 true")
... 
5 - 变量 a 和 b 都为 false,或其中一个变量为 false

--------------------------
如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值
x and y, 以下是例子
>>> 1 + 1 and 3
3
>>> 3 and 1 + 1
2
>>> 1 - 1 and 3
0

如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值
>>> 3 or 0
3
>>> 0 or 1 + 4
5

如果 x 为 True,返回 False 。如果 x 为 False,它返回 True
>>> not(0)
True
>>> not(1)
False
>>> not(1 and 0)    这个判断x为1, 返回0False, 前面的not取反所以为True
True

5、成员运算符

  • in :如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
  • not in :如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
>>> a = 3
>>> b = 9 
>>> list = [1, 2, 3, 4, 5 ]

>>> if ( a in list ):
...     print ("1 - 变量 a 在给定的列表中 list 中")
... else:
...     print ("1 - 变量 a 不在给定的列表中 list 中")
... 
1 - 变量 a 在给定的列表中 list>>> if ( b not in list ):
...    print ("2 - 变量 b 不在给定的列表中 list 中")
... else:
...    print ("2 - 变量 b 在给定的列表中 list 中")
... 
2 - 变量 b 不在给定的列表中 list

6、身份运算符

  • is :is 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y),如果引用的是同一个对象则返回 True,否则返回 False。
  • is not :is not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(a) != id(b),如果引用的不是同一个对象则返回结果 True,否则返回 False。

id() 函数用于获取对象内存地址

>>> a = 2
>>> b = 2
>>> a is b
True
>>> id(a) == id(b)
True
>>> a is not b
False
>>> id(a) != id(b)
False

>>> b = 5
>>> a is b
False
>>> id(a) == id(b)
False
>>> a is not b
True
>>> id(a) != id(b)
True

-----------------------
is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等
>>>a = [1, 2, 3]
>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True

四、Python解释器

Linux/Unix的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在 /usr/local/python3 目录中, 可以将python3添加到系统的环境变量中

1、交互式

#输入python3来进入python的交互式界面
[xiaobai@python] python3
Python 3.7.6 (default, Aug  9 2021, 13:32:43) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

>>> print ("Hello, Xiaobai!")    #执行这条命令
Hello, Xiaobai!                  #这是返回的结果

------
当键入一个多行结构时,续行是必须的。我们可以看下如下if语句
------
>>> flag = True
>>> if flag :                      #结尾使用:
...     print("flag条件为True!")    #顶头四个空格作为缩进
... 
flag条件为True!

>>> exit()

2、Python脚本

Python脚本是.py结尾的文件

[xiaobai@python] vim hello.py
#! /usr/bin/env python3
print ("Hello, Xiaobai!")

[xiaobai@python] chmod +x hello.py
[xiaobai@python] ./hello.py
Hello, Xiaobai!

#也可以python3执行
[xiaobai@python] python3 hello.py 
Hello, Xiaobai!

2.1、注释

Python中有单行注释也有多行注释, 单行注释以#开头, 多行注释用三个单引号 ‘’’ 或者三个双引号 “”" 将注释括起来

脚本写入这两行, 执行后只会得到Hello, Xiaobai!
print("Hello, Xiaobai!")
#print("Hello, World!")

[xiaobai@python] ./hello.py
Hello, Xiaobai!

----------------------
脚本中写入下面多行, 会发现''' '''内的全部不显示, 双引号也是一样
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号 
'''
print("Hello, Xiaobai!")
"""
print("Hello, World!")
print("Hello, World!")
"""

[xiaobai@python] ./hello.py
Hello, Xiaobai!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值