辛苦堆砌,转载请注明出处,谢谢!
Python前面的文章基本把数据类型方面的内容介绍完了,这次来看看包和函数。换其他语言,函数和包的部分可能会占到很大的篇幅,但是Python就很简单了。我们先来看看Python的文件。
Python的文件扩展名为.py,.py文件中可以放置任何Python的语句,如果安装Python时候勾选了将Python加入环境路径,我们就可以在任何地方双击.py文件运行,或者在命令行运行。例如,我们创建一个文件hello_world.py,内容如下:
print('Hello World')
input()
就是一句打印Hello World的语句,只不过我们放在了文件中,input()方法将导致程序等待用户输入,这样我们的中断不会很快关闭,以方便我们看到输出的Hello World,保存好,双击.py文件试试看!另外,我们也可以IDLE的file->open打开文件,然后Run->Run Module或F5来运行,这样运行的好处是我们可以进行调试。下面的例子都是使用这种方法运行的。
以上就是Python文件的说明,是不是很简单?说白了,所有Python终端可以运行的东西,我们都可以放在文件里面,我们可以将一个个工具程序分别放在不同的py文件中,这样方便我们使用,也方便代码的复用。
那么,什么是Python的包呢?说白了,Python的包就是一个目录。你没有看错,一个Python包就是一个目录,但是这个目录有一个特殊之处,这个目录中有一个__init__.py文件。也就是说,有__init__.py文件的目录就是Python的包,包名就是这个目录的名字。默认__init__.py文件什么都不写就可以了,只要有一个空文件就够了,当然你可以写入一些信息,可以从网上找一些资料了解一下。子包就是在包目录下再创建一个目录,然后创建一个__init__.py文件即可。
我们假设有一个example目录,其中有一个__init__.py文件,则我们有一个example包,然后example目录再创建一个HelloWorld的目录,其内再创建一个__init__.py文件,将我们上面的hello_world.py文件放在HelloWorld目录中,则我们的hello_world.py就是属于example.HelloWorld包,包中有一个模块是hello_world。我们在example目录创建一个example.py文件,稍后我们将在其中添加代码。我们的目录结构如下所示
example/
├── example.py
├── HelloWorld
│ ├── hello_world.py
│ ├── __init__.py
└── __init__.py
接下来我们就可以介绍函数了,Python的函数很简单,我们将上面打印Hello World的内容封装为函数
def printHelloWorld():
print('Hello World')
def是定义函数的关键字,后面是函数名加一个括号和一个冒号,之后是函数的缩进代码块。这个函数没有返回值,没有参数。
那么如何调用函数呢,我们打开example.py文件,输入以下内容
from HelloWorld.hello_world import printHelloWorld
printHelloWorld()
from 模块名 import 引用项 用来从某个模块引入某个项。我们上面就从HelloWorld.hello_world模块引入了printHelloWorld函数。hello_world模块的全限定名称就是我们hello_world.py文件的包名.文件名称。之后我们调用了printhelloWorld方法。运行example.py文件,可以看到和之前单独运行hello_world.py的效果一样。
看过了最简单的函数,我们看一下有返回值的函数,我们在hello_world.py中添加一个新函数
def returnHelloWorld():
return "Hello World"
这个函数通过return返回一个字符串,但是和其他语言不同的是,我们不必声明返回值类型。example添加代码
from HelloWorld.hello_world import returnHelloWorld
print(returnHelloWorld())
运行程序,这次打印了两个Hello World,只不过一个是printHelloWorld函数内部打印的,一个是我们调用returnHelloWorld之后,将其返回值进行了打印。
再来看一个例子,这个例子有一个参数,我们可以传递要打印的Hello X中的X,在hello_world.py添加函数
def printHello(word):
print("Hello " + word)
使用了字符串拼接,word是我们传入函数的参数,然后向example.py添加
from HelloWorld.hello_world import printHello
printHello('Cool Boy')
再次运行程序,会多打印一句Hello Cool Boy
函数的参数个数可以任意多,我们修改printHello函数,这个函数可以决定我们Hello X语句后的标点符号。
def printHello(word, endWith='.'):
print("Hello " + word + endWith)
这次有点东西需要说明一下,endWith是第二个参数,不过这个参数有一个默认值,为英文句点。也就是说,如果我们调用printHello函数,但是没有赋值endWith,这样也是可以的
printHello('Cool Boy')
打印结果是Hello Cool Boy.
如果赋值了第二个参数,例如
printHello('Cool Boy', '!')
打印结果为Hello Cool Boy!
另外,我们还可以使用显式方式赋值,这样,我们就没有必要按照顺序给参数赋值了
printHello(endWith="!", word="Cool Boy")
打印同样为Hello Cool Boy!
以上的函数内容足够各位小伙伴做一些开发了,还有可变参数的一些内容,感兴趣的大家可以再去进一步了解。
![](https://img-my.csdn.net/uploads/201612/08/1481201471_6133.png)