2018-10-14

作者: 辘轳鹿鹿 | 来源:发表于2018-10-14 23:59 被阅读1次

C基础入门Python(四)——函数

一、创建函数

1、def语句创建函数

  • def 函数名(参数表)
    def hello(your_name):
    #your_name表示你的名字,格式是字符串
    return 'Hello '+your_name

print(hello('Zhang San')) #result:Hello Zhang San
Python的参数不需要声明数据类型,程序员可能因不清楚参数的数据类型而出错,所以一般在函数开头注明函数的用途、输入和输出。

  • return语句可以有多个返回值
    return a,b

2、lambda语句创建匿名函数,函数没有名字

  • lambda 函数参数:返回值
    g=lambda x:x+1
    print(g(1)) #result:2

  • lambda定义的是单行函数,如果需要复杂的函数,应使用def语句

  • lambda参数列表可以包含多个,用逗号分隔开

  • lambda语句只有一个返回值
  • lambda仅含一条表达式

二、函数参数

1、位置或关键字参数

def fun2(a,b,c):
print(a,b,c)

fun2(1,2,3) #位置参数
fun2(a=1,b=2,c=3) #关键字参数,参数间没有顺序关系
fun2(1,c=3,b=2) #混合使用时,位置参数必须在关键字参数的前面

  • 函数参数列表可以定义默认参数,但必须在没有默认参数的后面

def fun2(a,b,c=1):
print(a,b,c)

2、任意数量的位置参数(需要一个星号前缀)

def fun4(str1,*numbers):
print(numbers)

fun4(1,2,3,4) #result:(2, 3, 4)
在传递参数时,可在原有参数的后面添加0个或多个参数,这些参数将会被放在元组内,并传入参数。其定义在位置或关键字参数之后,任意数量的关键字参数之前。

3、任意数量的关键字参数之前(需要两个星号前缀)

def fun4(str1,**numbers):
print(numbers)

fun4(1,b=2,c=3,d=4) #result:{'b': 2, 'c': 3, 'd': 4}

这些参数会被放到字典内并传入到函数。

三、可变对象与不可变对象

  • 不可变对象:数值类型,字符串,元组
  • 可变对象:字典,列表
  • 希望赋值时可变对象不进行引用,而是重新分配地址空间并将数据复制,可以利用copy模块。
    import copy
    list1=[1,2,['a','b']]
    list2=list1
    list3=copy.copy(list1)
    list4=copy.deepcopy(list1)
    list1.append(3)
    list1[2].append('c')

print('list1=',list1) print('list2=',list2) print('list3=',list3) print('list4=',list4)
#result:
#list1= [1, 2, ['a', 'b', 'c'], 3]
#list2= [1, 2, ['a', 'b', 'c'], 3]
#list3= [1, 2, ['a', 'b', 'c']]
#list4= [1, 2, ['a', 'b']]

四、作用域

  • 函数内部即可以访问局部变量,也可以访问全局变量。
  • 如果局部变量和全局变量重名,则屏蔽全局变量

相关文章

网友评论

    本文标题:2018-10-14

    本文链接:https://www.haomeiwen.com/subject/hcrxzftx.html