Python学习笔记

一、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)

4、递归函数


五、高级特性


六、函数式编程


七、模块


八、面向对象编程


九、面向对象高级编程


十、错误、调试和测试


十一、IO编程


十二、进程和线程


十三、正则表达式


十四、常用内建模块


十五、常用第三方模块


十六、virtualenv


十七、图形界面


十八、网络编程


十九、电子邮件


二十、访问数据库


二十一、Web开发


二十二、异步IO


二十三、使用MicroPython


二十四、实战


二十五、FAQ



全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务