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]