- 包就是含有__init__.py(注意init前后是两个_)的文件夹,其中__init__.py里面不用写代码。
- 模块就是包里面的函数
假设某个包中定义的模块为
def myfunc():
print('hello world!');
用import关键词调用模块,也可以用as给模块重命名
import pack.main as m;
m.myfunc();
pack.main.myfunc(); #两句语句的效果一样
- 下面重点介绍函数
函数的定义:def开头,空一格后面加函数名和(),()里面可以有参数,也可以没有参数,主要看函数的功能是否需要传入参数,再加冒号,第二行缩进后写函数体。
def myfunc():
print('hello world!');
变量的作用域,这个与C语言、C++、matlab都一样,函数里面的变量属于局部变量,此变量只作用于该函数里面,函数外面的属于全局变量。下面代码中,a为全局变量,b为局部变量。
a=10;
def myfunc():
b=100;
print(a,b)
myfunc();
函数的参数:普通参数、默认参数、可变长度参数
普通参数
a=10;
b=20;
def myfunc(i,j):
return(i+j);
print(myfunc(a,b));
默认参数:当调用参数时没给定传入参数的值的时候使用默认参数
a=10;
b=20;
def myfunc(i=1,j=2):
return(i+j);
print(myfunc());
可变长度参数:在参数前加一个*
def myfunc(*vals):
tot=0;
for i in vals:
tot+=i;
print(tot);
myfunc(1,2,3);
回调函数:一个函数中的参数是另一个函数。(return并不是必需的。如果没有return, 或者return后面没有返回值时,则函数将返回None。关键字return也返回多个值。多个值跟在return后面,以逗号分隔。从效果上看,其等价于返回一个有多个数据的元组。)
i=1;
j=2;
def myfunc(i,j,func):
return func(i,j);
def sum(a,b):
return '{}+{}={}'.format(a,b,a+b); #按格式返回
print(myfunc(i,j,sum));
def square_sum(a,b):
a = a**2
b = b**2
c = a + b
return c #函数的最后一句
print("am I alive?") #不会执行
递归函数:函数自己调用自己
下面给出一个实例以及其递归草图:计算不大于num的所有正整数之积。
num=3;
def myfunc(n):
if n>1:
return n*myfunc(n-1);
else:
return 1;
print(myfunc(num));
'''
递归草图:
myfunc(3){
return 3*myfunc(2){
return 2*myfunc(1){
return 1;
}
}
}