python--初识函数

什么叫函数?

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。

定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

语法

def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

返回值

1.没有返回值

  • 写return
  • 不写return
  • 有时写return None,不常用

2.有一个返回值:直接用return接收

3.有多个返回值:返回多值需要多值接收,返回值是元组,不能修改返回值所以要使用元组

 

def func_1()
    return 1,2
r1,r2 = func_1()
print(r1,r2)

$1,2
def func_1()
    return 1,2,3
r = func_1()
print(4)

$(1,2,3)

在终端输入,python内部有机制,下面分别对列表,元组,字典进行解包操作
>>>1,2
1,2
>>> a,b,c = ['a','b','c']
>>> a
'a'
>>> b
'b'
>>> c
'c'
>>> a,b,c = (1,2,3)
>>> a
1
>>> b
2
>>> c
3
>>> d1 = {'k1':'kk','v1':'vv'}
>>> a,c = d1
>>> a
'k1'
>>> c
'v1'

 

函数的参数

实际的要交给函数的内容,简称实参

在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参

以下是调用函数时可使用的正式参数类型:

  • 位置参数
  • *args :按位置传参的值组成一个元组
  • 默认参数
  • **kwargs :按关键字传参,组成一个字典

参数顺序: 位置参数,*arge,默认参数,**kwargs

动态参数的另一种传参方式 :

def func_1(*args) :
   print(args)

li = [1,2,3,4]
func_1(*li) 
#实参的星老师说是顺序打散,我的理解是解包
也就是说args = 1,2,3,4
如果直接传列表,args类型为以列表形式存储的元组
如果传*li,args类型为以列表各个值单独存储的元组

def func_2(**kwargs) :
   print(kwargs)
dic_1 = {'k1':'kk','v1':'vv'}
func_2(**dic_1)

参数解包  

# 参数解包:将整个list当做参数传给函数
list = [1, 2, 4]
def add_fn(a, b, c):
    return a + b + c
sum = add_fn(*list)
print("参数解包:", sum)
# ------------------------------
def func(*args)
   print(args)

func(*list)
# ------------------------------
所谓的解包(Unpacking)实际上可以看做是去掉()的元组或者是去掉{}的字典。
user = {'name': "Trey", 'website': "http://treyhunner.com"}
defaults = {'name': "Anonymous User", 'page_name': "Profile Page"}

print({**defaults, **user})

${'page_name': 'Profile Page', 'name': 'Trey', 'website': 'http://treyhunner.com'}
# --------------------------------
#值的解压
msg='hello'
l=[1,2,3]

# a,b,c,d,e=msg
# print(a,b,c,d,e)

# a,_,_,_,e=msg
*_,a = msg
# a,*_,e=msg
print(a)
# print(e)

  

  

posted @ 2017-12-27 20:17  wsg-python  阅读(133)  评论(0编辑  收藏  举报