python基础

Posted 刍荛采葑菲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础相关的知识,希望对你有一定的参考价值。

1、range(num)函数,返回0到num-1的列表
>>> list = range(100)
>>> print(list)
range(0, 100)
>>> print(type(list))
<class ‘range‘>
>>>
xxxxxxxxxx
6
 
1
>>> list = range(100)
2
>>> print(list)
3
range(0, 100)
4
>>> print(type(list))
5
<class ‘range‘>
6
>>>
>>> for i in range(100):
...     sum = sum + i + 1
...
>>> print(sum)
5050
xxxxxxxxxx
5
 
1
>>> for i in range(100):
2
...     sum = sum + i + 1
3
...
4
>>> print(sum)
5
5050

2、参数传递
在python中,有以下几种参数传递方式:
  • 位置传递
  • 关键字传递
  • 参数默认值
  • 包裹传递(packing) vs 解包裹(unpacking)

混合传递时原则:
先位置,后关键字,包裹位置,包裹关键字


位置传递:
>>> def f(a,b,c):
...     return a+b+c
...
>>> print(f(1,2,3));
6
xxxxxxxxxx
5
 
1
>>> def f(a,b,c):
2
...     return a+b+c
3
...
4
>>> print(f(1,2,3));
5
6

关键字传递:
>>> def f(a,b,c):
...     return a+b+c
...
>>> print(f(a=1,b=2,c=3));
6
xxxxxxxxxx
5
 
1
>>> def f(a,b,c):
2
...     return a+b+c
3
...
4
>>> print(f(a=1,b=2,c=3));
5
6

默认参数值:
>>> def f1(a,b,c=10):
...     return a+b+c;
...
>>> print(f1(1,2))
13
>>> print(f1(5,2))
17
>>> print(f1(2,4,5))
11
>>> print(f1(b=6))
17
xxxxxxxxxx
11
 
1
>>> def f1(a,b,c=10):
2
...     return a+b+c;
3
...
4
>>> print(f1(1,2))
5
13
6
>>> print(f1(5,2))
7
17
8
>>> print(f1(2,4,5))
9
11
10
>>> print(f1(b=6))
11
17

包裹传递:
一个星号表示传入元组、两个星号表示传入字典
>>> def func(*name):
...     print(type(name))
...     print(name)
...
>>> func(1,2)
<class ‘tuple‘>
(1, 2)
>>> func(1,2,4,5,6)
<class ‘tuple‘>
(1, 2, 4, 5, 6)
xxxxxxxxxx
10
 
1
>>> def func(*name):
2
...     print(type(name))
3
...     print(name)
4
...
5
>>> func(1,2)
6
<class ‘tuple‘>
7
(1, 2)
8
>>> func(1,2,4,5,6)
9
<class ‘tuple‘>
10
(1, 2, 4, 5, 6)
>>> def func1(**name):
...     print(type(name))
...     print(name)
...
>>> func1(a=1,b=2,c=3)
<class ‘dict‘>
{‘a‘: 1, ‘b‘: 2, ‘c‘: 3}
>>> func1(1,2,3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: func1() takes 0 positional arguments but 3 were given
xxxxxxxxxx
11
 
1
>>> def func1(**name):
2
...     print(type(name))
3
...     print(name)
4
...
5
>>> func1(a=1,b=2,c=3)
6
<class ‘dict‘>
7
{‘a‘: 1, ‘b‘: 2, ‘c‘: 3}
8
>>> func1(1,2,3)
9
Traceback (most recent call last):
10
  File "<stdin>", line 1, in <module>
11
TypeError: func1() takes 0 positional arguments but 3 were given

解包裹传递:
>>> def func3(a,b,c):
...     print(a,b,c)
...
>>> a = (1,3,5)
>>> func3(*a)
1 3 5
xxxxxxxxxx
6
 
1
>>> def func3(a,b,c):
2
...     print(a,b,c)
3
...
4
>>> a = (1,3,5)
5
>>> func3(*a)
6
1 3 5

>>> def func3(a,b,c):
...     print(a,b,c)
...
>>> b = {"a":"10","b":"20","c":"30"}
>>> func3(**b)
10 20 30
xxxxxxxxxx
6
 
1
>>> def func3(a,b,c):
2
...     print(a,b,c)
3
...
4
>>> b = {"a":"10","b":"20","c":"30"}
5
>>> func3(**b)
6
10 20 30

3、函数对象(lambda函数)
lambda函数语法: 
lambda a, b : a + b
lambda 参数 : 方法体
xxxxxxxxxx
2
 
1
lambda a, b : a + b
2
lambda 参数 : 方法体
>>> func = lambda a, b : a + b
>>> def sum(f,a,b):
...     print("--- the sum function ---")
...     print(f(a,b))
...
>>>
>>> sum(func,10,20)
--- the sum function ---
30
>>>
xxxxxxxxxx
10
 
1
>>> func = lambda a, b : a + b
2
>>> def sum(f,a,b):
3
...     print("--- the sum function ---")
4
...     print(f(a,b))
5
...
6
>>>
7
>>> sum(func,10,20)
8
--- the sum function ---
9
30
10
>>>


4、内置函数:
type()    查看变量类型
dir()       查看变量有哪些方法
>>> b = {"a":"1234"}
>>>
>>> dir(b)
[‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__delitem__‘, ‘__dir__‘, ‘__doc__‘
, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__gt__‘,
 ‘__hash__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘
__lt__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__seta
ttr__‘, ‘__setitem__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘clear‘, ‘co
py‘, ‘fromkeys‘, ‘get‘, ‘items‘, ‘keys‘, ‘pop‘, ‘popitem‘, ‘setdefault‘, ‘update
‘, ‘values‘]
xxxxxxxxxx
10
 
1
>>> b = {"a":"1234"}
2
>>>
3
>>> dir(b)
4
[‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__delitem__‘, ‘__dir__‘, ‘__doc__‘
5
, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__gt__‘,
6
 ‘__hash__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, 
7
__lt__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__seta
8
ttr__‘, ‘__setitem__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘clear‘, ‘co
9
py‘, ‘fromkeys‘, ‘get‘, ‘items‘, ‘keys‘, ‘pop‘, ‘popitem‘, ‘setdefault‘, ‘update
10
‘, ‘values‘]

help()
len()     长度
open()    文件输入和输出

循环相关
range()    
enumerate()
zip()

iter()  循环对象
>>> list = [1,2,3,4];
>>> i = iter(list)
>>> i.__next__()
1
>>> i.__next__()
2
>>> i.__next__()
3
>>> i.__next__()
4
>>> i.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>
xxxxxxxxxx
15
 
1
>>> list = [1,2,3,4];
2
>>> i = iter(list)
3
>>> i.__next__()
4
1
5
>>> i.__next__()
6
2
7
>>> i.__next__()
8
3
9
>>> i.__next__()
10
4
11
>>> i.__next__()
12
Traceback (most recent call last):
13
  File "<stdin>", line 1, in <module>
14
StopIteration
15
>>>

map() 函数是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
如:处理数值,例如,对于list [1, 2, 3, 4, 5, 6, 7, 8],如果希望把list的每个元素都作平方,就可以用map()函数:
>>> num_list = [1,2,3,4,5,6,7,8]
>>> func = lambda x : x*x
>>> num_map = map(func,num_list)
>>> print(list(num_map))
[1, 4, 9, 16, 25, 36, 49, 64]
xxxxxxxxxx
5
 
1
>>> num_list = [1,2,3,4,5,6,7,8]
2
>>> func = lambda x : x*x
3
>>> num_map = map(func,num_list)
4
>>> print(list(num_map))
5
[1, 4, 9, 16, 25, 36, 49, 64]

如:处理字符串,假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:
输入:[‘adam‘, ‘LISA‘, ‘barT‘]
输出:[‘Adam‘, ‘Lisa‘, ‘Bart‘]
>>> str_list = [‘adam‘, ‘LISA‘, ‘barT‘];
>>> func = lambda x : x[0:1].upper() + x[1:].lower();
>>> str_map = map(func,str_list);
>>> print(list(str_map));
[‘Adam‘, ‘Lisa‘, ‘Bart‘]
xxxxxxxxxx
5
 
1
>>> str_list = [‘adam‘, ‘LISA‘, ‘barT‘];
2
>>> func = lambda x : x[0:1].upper() + x[1:].lower();
3
>>> str_map = map(func,str_list);
4
>>> print(list(str_map));
5
[‘Adam‘, ‘Lisa‘, ‘Bart‘]


filter() 函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
例如:删除 None 或者空字符串:
>>> str_list = [‘test‘, None, ‘‘, ‘str‘, ‘  ‘, ‘END‘]
>>> def is_not_empty(s):
...     return s and len(s.strip());  # and前的s用来排除None
...
>>> rs = filter(is_not_empty,str_list)
>>> print(list(rs))
[‘test‘, ‘str‘, ‘END‘]
xxxxxxxxxx
7
 
1
>>> str_list = [‘test‘, None, ‘‘, ‘str‘, ‘  ‘, ‘END‘]
2
>>> def is_not_empty(s):
3
...     return s and len(s.strip());  # and前的s用来排除None
4
...
5
>>> rs = filter(is_not_empty,str_list)
6
>>> print(list(rs))
7
[‘test‘, ‘str‘, ‘END‘]

reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
并且reduce()函数还可以传入第三个参数,用来做函数f的初始参数。
在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里 用的话要 先引
入:
>>> from functools import reduce

如reduce(f, [1, 3, 5, 7, 9], 100),则先将计算f(100,1)。
可以用来做求和,虽然python自带了sum函数。
例如:求积:[2, 4, 5, 7, 12]
>>> from functools import reduce
>>> num_list = [2, 4, 5, 7, 12]
>>> func = lambda x,y : x*y
>>> rs = reduce(func,num_list)
>>> print(rs)
3360
xxxxxxxxxx
6
 
1
>>> from functools import reduce
2
>>> num_list = [2, 4, 5, 7, 12]
3
>>> func = lambda x,y : x*y
4
>>> rs = reduce(func,num_list)
5
>>> print(rs)
6
3360

在100的基础上求积[2, 4, 5, 7, 12]
>>> from functools import reduce
>>> num_list = [2, 4, 5, 7, 12]
>>> func = lambda x,y : x*y
>>> rs = reduce(func,num_list,100)
>>> print(rs)
336000
xxxxxxxxxx
6
 
1
>>> from functools import reduce
2
>>> num_list = [2, 4, 5, 7, 12]
3
>>> func = lambda x,y : x*y
4
>>> rs = reduce(func,num_list,100)
5
>>> print(rs)
6
336000


数学运算函数:
? abs(-2) #取绝对值
? round(2.3) #取整
? pow(3,2) #乘方
? cmp(3.1, 3.2) #比较大小
? divmod(9,7) #返回除法结果和余数
? max([2,4,6,8]) #求最大值
? min([1,2, -1, -2]) #求最小值
? sum([-1,1,5,7]) #求和


类型转化函数:
? int(“10”) #字符转为整数
? float(4) #转为浮点数
? long(“17”) #转为长整数
? str(3.5) #转为字符串
? complex(2, 5) #返回复数 2 + 5i
? ord(“A”) #A对应的ascii码
? chr(65) #ascii码对应的字符
? unichr(65) #数值65对应的unicode字符
? bool(0) #转换为相应的真假值,0相当于False
btw: “空”值相当于False: [], (), {}, 0, None, 0.0, ‘‘


序列操作函数:
? all([True, 2, “wow!"]) #是否所有元素相当于True
? any([0, “”, False, [], None]) #是否有元素相当于True
? sorted([1,7,4]) #序列升序排序
? reversed([1,5,3]) #降序排序
? list((1,2,3)) #转换为表list
? tuple([4,5,4]) #转换为tuple
? dict(a=3,b=“hi”,c=[1,2,3]) #构建字典



其它函数:
? id() #查看对象的内存位置
? type() #查看对象类型
? len() #查看对象长度
? input(‘ input something ’) #等待用户输入
? globals() #返回全局变量名,函数名
? locals() #返回局部命名空间





5、面向对象
  • 私有属性,所有方法。在方法名,属性名前加“__”。例如: __private_name
__private_name = 1;
def __private_func(self,name):
    print(name);
xxxxxxxxxx
3
 
1
__private_name = 1;
2
def __private_func(self,name):
3
    print(name);
  • 类名称首字母大写:
class ClassName():
xxxxxxxxxx
1
 
1
class ClassName():



6、模块
  1. 安装pip:
# 先安装setuptools
https://pypi.python.org/pypi/setuptools
# 后安装pip
https://pypi.python.org/pypi/pip
xxxxxxxxxx
4
 
1
# 先安装setuptools
2
https://pypi.python.org/pypi/setuptools
3
# 后安装pip
4
https://pypi.python.org/pypi/pip
# 编译(如果下载的是源码)
python setup.py build
# 安装(所有python的模块都适用)
python setup.py install

# 安装模块(安装玩pip后)
pip install xxx
xxxxxxxxxx
7
 
1
# 编译(如果下载的是源码)
2
python setup.py build
3
# 安装(所有python的模块都适用)
4
python setup.py install
5
6
# 安装模块(安装玩pip后)
7
pip install xxx
  1. 引入模块:
import module_name;
import module_name as mn;
from module_package import module_name;
from module_package import *;
xxxxxxxxxx
4
 
1
import module_name;
2
import module_name as mn;
3
from module_package import module_name;
4
from module_package import *;
  1. 模块引入路径:
模块搜索路径:
1、程序所在的位置
2、标准库的安装路径
3、操作系统环境变量PYTHONPATH指向的位置

但是如果我们的模块不在上述位置时,需要在环境变量中加入如下路径:
export PYTHONPATH=$PYTHONPATH:{module_path}
xxxxxxxxxx
7
 
1
模块搜索路径:
2
1、程序所在的位置
3
2、标准库的安装路径
4
3、操作系统环境变量PYTHONPATH指向的位置
5
6
但是如果我们的模块不在上述位置时,需要在环境变量中加入如下路径:
7
export PYTHONPATH=$PYTHONPATH:{module_path}


7、python标准库:
? 正则表达式 (re包)
? 时间与日期 (time, datetime包)
? 路径与文件 (os.path包, glob包)
? 文件管理 (部分os包,shutil包)
? 存储对象 (pickle包,cPickle包)
? 子进程 (subprocess包)
? 信号 (signal包)

? 线程同步 (threading包)
? 进程信息 (部分os包)
? 多进程初步 (multiprocessing包)
? 数学 (math包)
? 随机数(random包)
? 循环器 (itertools)
? 数据库 (sqlite3)

? …

? [官方文档]
? Python 2:
? https://docs.python.org/2/library
? Python 3:
? https://docs.python.org/3/library/index.html
























































以上是关于python基础的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段

python [代码片段]一些有趣的代码#sort

使用 Python 代码片段编写 LaTeX 文档

python 机器学习有用的代码片段