python-函数包和模块

python函数的作用: 在Python代码段中如果有一段几十行的代码,需要多次重复使用这几十行代码时,为了提高代码的可用性,将代码段放进函数体内,以后在使用中直接调用该函数模块即可,函数是一个独立的函数体或是一段独立的功能体,最主要的作用是解决代码的重用性。同时函数也具备一定的灵活性。

包定义与使用

一、包定义:

含有__init__.py文件的目录我们称之为包

二、包使用:

目录内的文件我们称之为模块,我们利用包和模块的目的是找模块也就是Python文件内的内容,主要是哪些内容,一般都是功能体、代码段比较封闭,主要有两个,一个是类、一个是函数。

import package.module

package.module.myfunc()

三、包的定义和使用——示例

、首先创建一个目录,命名为pack。目录内包含_init_.py的就称之为包。

、在包内创建一个模块,命名为main.py。

、在模块main.py中我们定义一个函数,名称为myfunc();

、在主程序下的index.py下调用函数,其中as bm是为包下的main.py起的别名。

其包含关系为:包(pack)模块(main.py)函数(myfunc();)

函数的定义与使用

、myfunc函数定义与使用

def myfunc():

//函数体

print('hello world');

myfunc();

运行结果:

hello world

[Finished in 0.1s]

变量作用域

、全局变量

在一个函数体外的变量,我们称之为全局变量,可以在函数内直接使用。

a=10;

def myfunc():

print(a);

myfunc();

运行结果:

10

[Finished in 0.2s]

、局部变量

在一个函数体内的变量,我们称之为局部变量,不可以在函数外面直接使用。

def myfunc():

a=10;

myfunc();

print(a);

运行结果:

Traceback (most recent call last):

File "D:pythonindex.py", line 9, in

print(a);

NameError: name 'a' is not defined

[Finished in 0.1s with exit code 1]

函数参数

、普通参数

参数把外面真实的值传递给里面去使用,外面的称之为实参、里面的称之为形参

a=10;

def myfunc(i):

print(i);

myfunc(a);

注:a就是实参、i就是形参,将a的值传递给i,被i使用。

运行结果:

10

[Finished in 0.1s]

计算两数之和

普通参数示例

#已知2018年,求2018年是闰年还是平年?

#闰年的条件有两个:

#1、能被4整除,但不能被100整除。

#2、能被4整除,同时如果能被100整除的话,则必须同是能被400整除。

year=2000;

def getYear(y):

if (y%4==0) and (y%100!=0) or (y%400==0):

print('yes');

else:

print('no');

getYear(year);

注:通过函数传参,将year传递给y,然后在内部进行计算。

、默认参数

#默认参数

a=10;

b=20;

def sum(i=1,j=2):

print(i+j);

sum();

注:如果将a和b传给了i和j,则执行传递的值进行计算,如果没有传递值,则使用默认的1和2进行计算,这就是默认参数。默认参数一般在没有传递参数的时候使用。

另外,参数传值是按照顺序传值的。

x运行结果:

3

[Finished in 0.1s]

、序列参数

#序列参数

def sum(i):

print(i);

arr=[1,3,5,7,9]

sum(arr);

运行结果:

[1, 3, 5, 7, 9]

[Finished in 0.1s]

、任意参数

#任意参数

def sum(*vals):

tot=0;

for i in vals:

tot+=i;

print(tot);

sum(2,4,6,8,10);

运行结果:

30

[Finished in 0.1s]

、字典参数

#字典参数

def sum(**vals):

print(vals);

sum(name1='user1',name2='user2',name3='user3');

住:变量和值的关系,变量不能加单引号

x运行结果:

{'name1': 'user1', 'name2': 'user2', 'name3': 'user3'}

[Finished in 0.1s]

字典遍历:

#字典参数

def sum(**vals):

for i in vals:

print(i,vals[i]);

sum(name1='user1',name2='user2',name3='user3');

运行结果:

name1 user1

name2 user2

name3 user3

[Finished in 0.1s]

函数的返回值

、print();

#函数返回值

ef sum(i,j):

# print(i+j);

return(i+j);

print(sum(1,2));

注:return(i+j);只返回,不打印,谁调用就返回给谁,如果想打印,在sum前使用print即可。

运行结果:

3

[Finished in 0.1s]

、return()或return;

是直接打印好,还是直接返回好?

返回能体现出函数的特点,是一个独立的代码段或功能体,如果用print它不独立,为什么,如果我用sum(1,2)传进去得到的值就是3呢,但是结果3并不着急打印,后续还要处理。

函数如果没有返回值,返回的就是none。

def sum(i,j):

# print(i+j);

return(i+j);

a=10;

b=20;

str='{}+{}={}'.format(a,b,sum(a,b));

print(str);

运行结果:

10+20=30

[Finished in 0.1s]

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190119A01IQW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券