python小总结

1、获取python IDLE当前工作目录:

1 import os
2 os.getcwd()

2、更改当前工作目录(目录前面需要加“r”,不然会报语法错误):

os.chdir(r"工作目录")

3、运行xxx.py内的某个函数:

1 from xxx import func_name  #xxx不需要包含扩展名.py
2 func_name() #直接调用即可

4、空函数

def func_name():
    pass  #pass是占位符,便于处理未写好的函数

5、数据类型检查可以使用函数isinstance(),对参数类型做检查,只允许整数和浮点数类型的参数

def my_abs(x):
    if not isinstance(x, (int, float)):
        raise TypeError('bad operand type')
    if x >= 0:
        return x
    else:
        return -x

 6、定义包含可变参数的函数:

1 def calc(*numbers): #在参数前加一个“*”,调用函数是可以直接输入calc(3,4,1,2)
2     sum = 0
3     for n in numbers:
4         sum = sum + n * n
5     return sum

7、关键字参数

可变参数允许传入0个或者任意一个参数,这些可变参数在函数调用时自动组装为一个tuple,而关键字参数允许传入0个或者任意个含参数名的参数,这些参数在函数内部自动组织为一个dict。

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}

>>> extra = {'city': 'Beijing', 'job': 'Engineer'} #还可以这样调用 >>> person('Jack', 24, **extra) name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

8、python定义函数时,可以将5中参数同时组合使用(参数组合),组合顺序必须为:必选参数、默认参数、可变参数、命名关键字参数、关键字参数。

9、改动下面的product函数,使之变成可接收一个或多个数并计算乘积:

 1 def product(x,y):
 2     return x*y
 3 
 4 
 5 #改为
 6 def product(*kw):
 7     pro = 1 
 8     for i in kw:
 9         pro = pro * i
10     return pro

要注意定义可变参数和关键字参数的语法:

*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。

以及调用函数时如何传入可变参数和关键字参数的语法:

可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3))

关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})

10、递归函数

汉诺塔:

 1  利用递归函数移动汉诺塔:
 2 def move(n, a, b, c):
 3     if n == 1:
 4         print('move', a, '-->', c)
 5     else:
 6         move(n-1, a, c, b)
 7         move(1, a, b, c)
 8         move(n-1, b, a, c)
 9 
10 move(4, 'A', 'B', 'C')

 11、迭代dict:

1 d={"a":3,"b":2,"c":6}
2 for key in d:          #迭代key值
3     print(key)
4 
5 for value in d.values():   #迭代value值
6     print(value)
7 
8 for k,d in d.items():     #同时迭代key、value值
9     print(k,d)

12、python内置函数enumerate可以将list、tuple变成索引-元素对,这样可以在for循环中同时迭代索引和元素本身:

1 d=[(2,3),(4,5),(1,2)]
2 for i,value in enumerate(d):
3     print(i,value)

13、列表生成式语句非常简洁,用一句话就可以生成一个list对象:

[x*x for x in range(1,11)]

 14、杨辉三角生成器

 1 def triangles(lines):
 2     L=[]
 3     if lines == 0:
 4         yield L
 5     else:
 6         L=[1]
 7         i=1
 8         yield L
 9         while i<lines:
10             L=[sum(i) for i in zip([0]+L,L+[0])]
11             i=i+1
12             yield L

参考了 https://blog.csdn.net/zmy_3/article/details/51173580 这篇用的zip函数,自己稍加修改了一下。

一开始不懂的地方是第10行代码,两个list相加,就是合并,理解了这一点,在参考链接的那段代码,就很容易理解了。

 15、利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。

1 def normalize(name):
2     return(name.capitalize())
3 
4 
5 l1=["xiaoming","dagou","john"]
6 l2=list(map(normalize,l1))

['Xiaoming', 'Dagou', 'John']#输出结果

猜你喜欢

转载自www.cnblogs.com/zmjbk/p/8973189.html