1. 多类型传值和冗余参数
把元组作为参数传给函数:
fun(*tuple)
注:命名参数后面跟元组,不能把元组放在命名参数前
fun(x=1, y=2)
注:x 和 y 不能改成其他字符,必须和函数定义的形式参数一致;
字典传值:
fun(**dict)
字典的keys要和函数的行参一致
冗余参数:
向函数传元组和字典
处理多余实参
def fun(x,y,*args,**kwargs)
- x y表示普通命名参数;
- 接收冗余参数用*args 和 **kwargs表示;
- *args 会把多余的参数写到元组里;
- **kwargs 冗余参数是默认参数类型或字典时写入Kwargs;
2. 函数的递归调用
递归是函数内部调用自己,通常用来计算阶层
计算阶层有循环和递归两种方法;
普通方法:
- 使用循环
1到n递乘:
#! /usr/bin/python
def factorial(n):
sum = 1
for i in range(1, n+1):
sum *= i
return sum
print factorial(5)
1到n递加:
#! /usr/bin/python
def factorial(n):
sum = 0
for i in range(1, n+1):
sum += i
return sum
print factorial(100)
递归调用:
n到1递乘:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print factorial(5)
1到n递加:
#! /usr/bin/python
def factorial(n):
if n == 0:
return 0
else:
return n + factorial(n-1)
print factorial(100)
递归的注意事项:
必须有最后的默认结果
if n == 0
递归参数必须向默认结果收敛的:
factorial(n-1)
os模块的几个方法:
os.listdir()
列出目录下的文件和目录,以列表形式输出
os.path.isdir()
判断是不是目录,返回bool值
os.path.isfile()
判断是不是文件,返回bool值
os.path.join()
连接路径,不会判断文件存不存在
打印目录下所有文件:
#! /usr/bin/python
import os
import sys
def print_files(path):
lsdir = os.listdir(path)
dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i))]
files = [i for i in lsdir if os.path.isfile(os.path.join(path, i))]
if dirs:
for d in dirs:
print_files(os.path.join(path,d))
if files:
for f in files:
print os.path.join(path,f)
print_files(sys.argv[1])