python学习之包、模块、函数

  • 包就是含有__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;
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值