一、Python简介
Python是著名的“龟叔”Guido van Rossum(荷兰人)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。
使用Python我们可以做什么呢?
- 首选是网络应用,包括网站、后台服务等等;
- 其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;
- 另外就是把其他语言开发的程序再包装起来,方便使用。
二、Python安装
1、Mac上安装Python
Mac一般自带2.x版本的Python,可以通过Homebrew安装3.x版本的Python。命令为:
brew install python3
2、Linux上安装Python
(1)查看目前版本号
python --version
(2)上传并解压Python3.x
sudo rz tar -zxf Python-3.6.3.tgz
(3)安装依赖模块
yum -y install zlib zlib-devel yum -y install bzip2 bzip2-devel yum -y install ncurses ncurses-devel yum -y install readline readline-devel yum -y install openssl openssl-devel yum -y install openssl-static yum -y install xz lzma xz-devel yum -y install sqlite sqlite-devel yum -y install gdbm gdbm-devel yum -y install tk tk-devel yum install gcc
(4)安装Python3.x
# 切换到Python目录 cd Python-3.6.3 # 进行configure操作,prefix指定python安装目录 ./configure --with-ssl --prefix=/opt/modules/python3 # 进行make和make install操作 # =================================================== # 此时查看python版本号,还是2.x,需要更换软链接 # 首先切换到root用户下 su - # 旧版本的软链接可以不用删除,改个名字即可,然后创建新版本的软链接 mv /usr/bin/python /usr/bin/python_bak_2.x ln -s /opt/modules/python3/bin/python3 /usr/bin/python # 再次查看版本号,已切换到python3.x python --version
三、Python基础
# 有序列表:list常用方法 # 列表元素个数 len(list) # 随机访问,通过索引 list[index] # 末尾增加元素 list.append(element) # 指定位置增加元素 list.insert(index, element) # 删除末尾元素 list.pop() # 删除指定位置元素 list.pop(index) # 列表排序 list.sort() # =========================== # 有序列表:元组tuple常用方法
# 字典dict常用方法 # 获得对应key的值 dict[key] # 判断key是否在dict中,返回boolean;通过dict提供的get()方法,不给自定义值,不存在返回None key in dict dict.get(key, -1) # 删除key dict.pop(key) # 增加元素,如下 a = {'age': 23, 'name': 'lala'} a['school'] = 'nanhaizhongxue' # ========================= # 无序列表set常用方法 # 创建set s = set([1, 2, 3]) # 增加元素 s.add(key) # 删除元素 s.remove(key) # 交集和并集操作 s1 & s2 s1 | s2
四、函数
1、调用函数
# 绝对值函数,参数可以为整数、浮点数 abs(arg) # 最大值函数,参数个数可以为多个 max(arg1, args2, ...) # int函数,数据类型变换 int('123') int(12.34) # 同理float、str和bool函数 float('12.34') # 12.34 str(1.23) # '1.23' str(100) # '100' bool(1) # True bool('') # False函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量。
a = abs # 变量a指向abs函数 a(-1) # 所以也可以通过a调用abs函数
2、定义函数
# 如下,简单的定义了一个绝对值函数 def my_abs(x): if not isinstance(x, (int, float)): raise TypeError('bad operand type') if x >= 0: return x else: return -x # 定义空函数 def nop(): pass
# 返回多个值 import math def move(x, y, step, angle=0): nx = x + step * math.cos(angle) ny = y - step * math.sin(angle) return nx, ny # 其实这只是一种假象,Python函数返回的仍然是单一值:tuple # 但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple, # 按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
3、函数的参数
(1)位置函数
# 定义x的n次方 def power(x, n): s = 1 while n > 0: n = n - 1 s = s * x return s此时,x、n为位置参数。调用函数时,传入的两个值按照位置顺序依次赋给参数x和n。
(2)默认参数
def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s # 此时调用power(5),不报错。因为,默认传入n=2,得到25。 # 一是必选参数在前,默认参数在后,否则Python的解释器会报错; # 二是如何设置默认参数。
def enroll(name, gender, age=6, city='Beijing'): print('name:', name) print('gender:', gender) print('age:', age) print('city:', city) # 按顺序提供默认参数:enroll('Bob', 'M', 7) # 不按顺序提供部分默认参数:enroll('Adam', 'M', city='Tianjin') # 默认参数有个大坑。因此,定义默认参数要牢记一点:默认参数必须指向不变对象!正确案例如下: def add_end(L=None): if L is None: L = [] L.append('END') return L
(3)可变参数
def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum # 在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple如果为可变对象,比如list,可以通过如下这样:
nums = [1, 2, 3] calc(*nums) # Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去
(4)关键字参数
# 关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw) # person('Adam', 45, gender='M', job='Engineer') # extra = {'city': 'Beijing', 'job': 'Engineer'} # person('Jack', 24, city=extra['city'], job=extra['job']) # extra = {'city': 'Beijing', 'job': 'Engineer'} # person('Jack', 24, **extra) # 注意:**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数, # kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。
(5)命令关键字参数
# 如果要限制关键字参数的名字,就可以用命名关键字参数, # 例如,只接收city和job作为关键字参数。这种方式定义的函数如下: def person(name, age, *, city, job): print(name, age, city, job) # 如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了: def person(name, age, *args, city, job): print(name, age, args, city, job)
(6)参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
比如定义一个函数,包含上述若干种参数:
def f1(a, b, c=0, *args, **kw): print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw) def f2(a, b, c=0, *, d, **kw): print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)