python 学习笔记(4) python函数和模块

函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。也可以自己创建函数,这被叫做用户自定义函数。

自定义函数语法:

def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

最简单的一个例子:

def printstr(str):
    print(str);
    return;
printstr("测试一下")

定义了一个输出字符串的函数,结果输出为“测试一下”。

看博客里面说:“所有参数(自变量)在Python里都是按引用传递“。然后我就以c++程序猿的思维,写了一个 a\b交换的例子,既然不是值传递,那么a.b应该可以直接交换吧?

def changeab(a,b):
    temp = a;
    a = b;
    b = temp;
    print "函数内输出a、b分别为:%d,%d"%(a,b);
    return;
a = 2;
b = 3;
changeab(a,b);
print "函数外输出a、b分别为:%d,%d"%(a,b);

可惜输出结果是:

函数内输出a、b分别为:3,2
函数外输出a、b分别为:2,3

这不还是值传递嘛!后来看到 一个博客写的很详细,这里就不细说了,直接给出他得出的结论:

结论:python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。

想一想挺有道理的,不过再转念想想,这和C++的本质也差不到哪里去,不过方便是方便了一些。

函数参数:

必备参数:

关键字参数:有意思,只要有关键字匹配,可以不考虑参数的顺序。不过写久了c++也不会闲的蛋疼去故意改传参数的顺序把...

缺省参数:传入默认值。

不定常参数:

def functionname([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]

匿名函数:python 使用 lambda 来创建匿名函数。主体是表达式。

python模块:

模块让你能够有逻辑地组织你的Python代码段。

把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。

模块也是Python对象,具有随机的名字属性用来绑定或引用。

简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。

1、import语句:可以导入.py文件。这样就能使用.py文件中定义与实现的函数了。

2、from...import   导入一个模块中指定的部分。并不全部导入模块。

3、要全部导入,可以from...import*;

python中的包:

包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的Python的应用环境。

__init__.py:这个文件的作用是把整个目录中的.py文件导入进来,这样再使用这个目录下的一些函数的时候,就只需要导入__init__.py文件即可。

猜你喜欢

转载自blog.csdn.net/chengzhongxuyou/article/details/52735207
今日推荐