Python介绍(11)

2.9 函数 (二)

函数定义:函数是组织好的,可重复使用的,能够完成特定功能的代码块,它是代码块的抽象。

In [108]: get_keys({'a':40},40)

Out[108]: ['a']

 

位置参数是不可以交换位置的

In [109]:

def get_keys(dict_varibal,value):

return[k for k,v in dict_varibal.items() if v == value]

1.get_keys 函数名,(函数名的命名,遵循变量命名的规范)

2.()中的内容为参数 dict_varibal:形参,调用的时候传递的值(a)才是实际的参数,实参和形参是一一对应的,称:位置参数

3.return 是返回值

位置参数一一对应,不太方便 使用关键字参数 关键字参数好处:可以不按顺序去写

 

#关键字参数

In [110]:

get_keys(dict_varibal={'a':40},value=40)

#把形参dict_varibal写了出来

Out[110]: ['a']

#不按顺序

In [111]: get_keys(value=40,dict_varibal={'a':40})

Out[111]: ['a']

2.10 函数 (三)

问题:函数通过参数获取我们传递的值,函数中改变了参数的值,那么我们传递进去的值是否改变?

In [112]:

def test(varibal):   # 翻译 :定义测试(变量):

varibal = 100

return varibal

In [113]:

var = 1

test(var)    # 翻译:测试

Out[113]: 100

In [114]:

print(var)

1

varibal在函数内部进行更改,但var变量并没有改变

In [115]:

def test(varibal):

varibal.append(100)  #增加100

return varibal  #可写可不行,

In [116]:

var = []

test(var)

Out[116]: [100]

In [117]: var

Out[117]: [100]

var 发生了改变

不建议对可变类型在函数内部进行更改,建议用函数进行从新赋值

In [118]:

def test(varibal):

temp = varibal.copy()

temp.append(100)

return temp

#对var进行重新赋值

In [119]:

var = []

var = test(var)

In [120]: var

Out[120]: [100]

 

#如果不重新赋值,var是空的

In [121]:

var =[]

test(var)

Out[121]: [100]

In [122]: var

Out[122]:[]

参数的收集

#参数的值知道有name和age,还有其他的不知道,所以用 *args和**kwargs表示( * 收集位置参数 , ** 收集关键字参数)

In [123]:

def test(name,age,*args,**kwargs):

print(name,age,*args,**kwargs)

In [124]:

test('wong',12)

wong 12

In [125]:

test('wong',12,23,'ikl'[23,34])

---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-125-6f143343b5c9> in <module>()

----> 1 test('wong',12,23,'ikl'[23,34])

TypeError: string indices must be integers

问:视频人家是对的 ,这里去掉 'ikl' 则正确

In [126]:

test('wong',12,23,[23,34])

wong 12 23 [23, 34]

#不加星号:

In [127]:

def test(name,age,*args,**kwargs):

print(name,age,args,**kwargs)

In [128]:

test('wong',12,23,[23,34])

#不加 * 把后面的一些输出一个元组

wong 12 (23, [23, 34])

#关键字参数

In [129]:

dict_varibals ={

'weight': 120,

'height':175

}

test('wong',12,dict_varibals)

wong 12 ({'weight': 120, 'height': 175},)

猜你喜欢

转载自blog.csdn.net/zxqjinhu/article/details/80779687