python基础之函数--返回值和参数

函数

一、为何要有函数?

不加区分地将所有功能的代码垒到一起,问题是:

1、代码可读性差

2、代码冗余

3、代码可扩展差

如何解决?

函数即工具,事先准备工具的过程是定义函数,拿来就用指的就是函数调用

结论:函数使用必须是:先定义,后调用

二、函数的使用方法

 1 python中函数定义方法:
 2  
 3 def test(x):
 4     "The function definitions"
 5     x+=1
 6     return x
 7      
 8 def:定义函数的关键字
 9 test:函数名
10 ():内可定义形参
11 "":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
12 x+=1:泛指代码块或程序处理逻辑
13 return:定义返回值


调用运行:可以带参数也可以不带
函数名()

1、函数的返回值

当一个函数没有使用return,显示定义返回值时,朋友通红解释器会返回None

2、函数的参数和使用

===================》part1

位置参数:按照从左到右的顺序依次定义的参数

def foo(x,y):
    print(x)
    print(y)

按照位置定义的形参,必须被传值,多一个不行,少一个不行

#foo(1,2,3)

按照位置定义的实参,与形参一一对应

#foo(1,2,3)

===================》part2

关键字参数:实参在定义时,按照key=value形式定义

def foo(x,y):
    print(x)
    print(y)
foo(y=10,x=1)

关键字参数可以不用像位置参数那样一一对应

注意事项:

a、位置实参必须在关键字实参的前面

b、实参的形式既可以用位置实参又可以是关键字实参,但是一个形参不能重复传值

===================》part3

默认参数:在定义函数阶段,就已经为形参赋值,定义阶段有值,调用阶段可以不用传值

# def func(x,y=10):
#     print(x)
#     print(y)


# func(1,20)
# func(1)

实参分为:位置实参和关键字实参       形参分为位置形参和默认参数

#形参的应用:值经常变化的需要定义成位置形参,
# 值大多数情况下都一样,需要定义成默认参数def register(name,age,sex='male'):     print(name,age,sex)register('alex',1000)register('wupeiqi',9000)register('yuanhao',10000)register('王铁蛋',10000,'female')

默认参数需注意的问题:

a、必须放在位置形参的后面

b、默认参数通常要定义成不可变类型

c、默认参数只在定义阶段被赋值一次

x=10
def func(name,age=x):
    print(name)
    print(age)
x=20

func('egon')

===================》part4

可变长参数:可变长指的是实参的个数不固定

按位置定义的可变长度的实参:*

按关键字定义的可变长的实参:**

按位置定义:
def
func(x,y,*args): #x=1,y=2,args=(3,4,5,6) print(x,y) print(args) func(1,2,3,4,5,6)

# def func(x,y,z):
# print(x,y,z)
#
# # func(1,*(2,3)) #func(1,2,3)
# func(*(2,3)) #func(2,3)

#
# def func(x,y=2,z=1):
# print(x,y,z)
#
#
# func(*('a','b','c')) #func('a','b','c')

按关键字定义;
def func(x,y,**kwargs):           #x=1,y=2,kwargs={'a':1,'b':3,'z':3}    print(x,y)    print(kwargs)

func(1,y=2,z=3,a=1,b=3) # def func(x,y,**kwargs): #x=1,y=2,**kwargs=**{'a':1,'b':3,'z':3} # print(x,y) # print(kwargs) # # func(1,y=2,**{'a':1,'b':3,'z':3}) #func(1,y=2,z=3,b=3,a=1) # def func(x,y=1,z=1): # print(x,y,z) # # func(**{'y':2,'x':1,'z':3})

命名关键字参数:定义在*后的形参,这类形参,必须被传值,而且要求实参必须是以关键字的形式来传值

def register(name,age,*,group,**kwargs):
    print(name)
    print(age)
    print(kwargs)


##register('egon',18)
register('egon1',18,hobby='paly1',group='group1')

形参的命名顺序:形参:位置形参,默认参数,*args,命名关键字参数,**kwargs

原文地址:https://www.cnblogs.com/fenglinglf/p/6993940.html