函数初识

一、什么是函数?

定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。

特性:

  1、代码重用;

  2、保持一致性;

  3、可扩展性;

  4、可读性强。

二、函数的创建

2.1 格式

Python 定义函数使用 def 关键字,一般格式如下:

def   函数名(参数列表):

        函数体

1 def hello():
2     print('hello')
3    
4 hello()#函数调用

2.2 函数名的命名规则

  • 函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号;
  • 函数名是区分大小写的。
  • 函数名不能是保留字。

三、函数的返回值

1、要想获取函数的执行结果,就可以用return语句把结果返回。

2、return关键字的作用

  return 是一个关键字,在pycharm里,你会看到它变成蓝色了。这个词翻译过来就是“返回”,所以我们管写在return后面的值叫“返回值”。要研究返回值,返回值有3种情况:分别是没有返回值返回一个值返回多个值

(1)没有返回值

  • 不写return,会默认返回一个None。
  • 只写return,后面不写其他内容,也会返回None,有的同学会奇怪,既然没有要返回的值,完全可以不写return,为什么还要写个return呢?这里我们要说一下return的其他用法,就是一旦遇到return,结束整个函数
 1 def func():
 2     l=['菜菜','灵灵']
 3     for i in l:
 4         print(i)
 5         if i=='菜菜':
 6             # return None   #return结束了整个函数的执行,不会在执行print('****')
 7             break           #break只是结束了本次循环,还是会执行print('****')
 8     print('****')
 9 ret=func()
10 print(ret)

 

  • return None(不常用)

(2)返回一个值

  • 可以返回任何数据类型
  • 只要返回就可以接收到
  • 如果在一个程序中有多个return,那么只执行第一个。
1 def func():
2     return {'k':'v'}
3     return '你好'
4 print(func())
5 
6 #结果:{'k': 'v'}

 

(3)返回多个值

  • 用多个变量接收:有多少返回值就用多少变量接收
  • 用一个变量接收: 得到的是一个元组
1 def func2():
2     return 1,2,3
3 
4 r1,r2,r3=func2()   
5 ret=func2()
6 
7 print(r1,r2,r3)    #结果:1 2 3
8 print(ret)         #结果:(1,2,3) 元组

 

3、return作用总结

(1)结束函数;

(2)返回值。

四、函数的参数

 1 def mylen(s1):
 2     """计算s1的长度"""
 3     length = 0
 4     for i in s1:
 5         length = length+1
 6     return length
 7 
 8 #函数调用
 9 str_len = mylen("hello world")
10 print('str_len : %s'%str_len)

1、实参与形参

我们调用函数时传递的这个“hello world”被称为实际参数,因为这个是实际的要交给函数的内容,简称实参。

定义函数时的s1,只是一个变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参

2、参数的个数

  • 没有参数;
  • 有一个参数;
  • 有多个参数。

3、站在实参的角度

  • 按位置传参
  • 按关键字传参
  • 位置、关键字形式混着用
1 def my_sum(a,b):
2     print(a,b)
3     ret=a+b
4     return ret
5 
6 print(my_sum(1,2))      #按位置传参
7 print(my_sum(b=4,a=1))  #按关键字传参
8 print(my_sum(4,b=9))    #混用

 

注意事项:(1)位置传参和关键字传参可以混合使用,必须先按照位置传参,再按照关键字传参;

                  (2)不能给同一个变量传多个值。

 4、站在形参的角度

位置参数:必须传,且有几个参数就传几个值

(1)代码

1 def classmate(name,sex):
2     print('%s:%s'%(name,sex))
3 
4 classmate('菜菜','')       #按位置传参
5 classmate(sex='',name='灵灵')  #按关键字传参

(2)默认参数的陷阱

 

默认参数:可以不传,如果不传就是用默认的参数,如果传了就用传了的。

1 def classmate(name,sex=''):
2     print('%s:%s'%(name,sex))
3 
4 classmate('菜菜')

结果: 菜菜:女

 

*args:接收的是按照位置传参的值,组织成一个元组

(1)代码:

 1 def sum(*args):
 2     n=0
 3     for i in  args:
 4         n+=i
 5     return n
 6 
 7 ret=sum(1,2,3)
 8 print(ret)   #6
 9 ret=sum(1,2,3,4,5)
10 print(ret)   #15

 

**kwargs:接受的是按照关键字传参的值,组织成一个字典

(1)代码:

1 def func(**kwargs):
2     print(kwargs)
3 
4 func(a=1,b=2,c=3)       #结果:{'a': 1, 'c': 3, 'b': 2}
5 func(菜菜=18,灵灵=19)   #中文不用加引号,真是奇怪啊!!     结果:{'菜菜': 18, '灵灵': 19}

 

优先级:位置参数>*args>默认参数>**kwargs

 

5、动态参数的另一种传参方式

(1)代码

(2)代码

 

6、默认参数的陷阱

1、代码

 

posted on 2018-09-18 16:50  cherish-LL  阅读(204)  评论(0)    收藏  举报

导航