Python学习6-函数

对某一类操作进行封装既可以获得函数,在java中成为方法。函数是抽象的基本语法。

1. 系统函数
python提供了许多已经定义好的函数,只需要调用方便人们使用。如获取绝对值(abs)、长度(len)、最大(max)/最小(min)值等。

>>> abs(-11.2)
11.2
>>> abs(1)
1
>>> max(3,1,2,4,7,3,5)
7
>>> min(3,1,2,4,7,3,5)
1
>>> len('abcd')
4
>>> divmod(7,3)
(2, 1)
>>> round(11)
11
>>> int('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'a'
>>> int('1')
1

2. 自定义函数

  • 函数定义
    Python中函数使用“def”关键字定义,然后为函数名、括号、括号里的参数、“:”,换行后缩进中定义函数的具体代码块,如果有返回值使用“return”关键字(无返回值时会返回None)。
    1)、参数可以为无参数、一个或者多个参数。
    如下,定义一个无参数的printHello函数、和一个做加法的add函数。

    >>> def printHello():
    ...   print('hello python')
    ...
    >>> printHello()
    hello python
    >>>
    >>> def add(a,b):
    ...   return a+b
    ...
    >>> add(1,3)
    4

    2)、参数默认值。参数可以设置默认值,设置后该参数可以不传,在函数中使用默认值,也可以使用参数名=值传递默认值(调用函数有多个默认值不全部传时)。

    >>> def printMy(name,age=12):
    ...   print('Hello, My name is ',name,', age is ',age)
    ...
    >>> printMy('zhangsan')
    Hello, My name is  zhangsan , age is  12
    >>> printMy('zhangsan',20)
    Hello, My name is  zhangsan , age is  20
    >>> printMy('zhangsan',age=13)
    Hello, My name is  zhangsan , age is  13

    3)、可变参数。可变长度参数可以传入一个list或tuple,也可以使用 “*参数名”传入参数。循环参数列表的方法相同。如下:

    >>> def testList(list):
    ...   sum=0
    ...   for num in list:
    ...     sum = sum+num
    ...   return sum
    ...
    >>> list=[1,2,3,4]
    >>> testList(list)
    10
    >>> list=[1,2,3,4,5,6]
    >>> testList(list)
    21
    >>>
    >>> def test(*nums):
    ...   sum=0
    ...   for num in nums:
    ...     sum=sum+num
    ...   return sum
    ...
    >>> test(1,2)
    3
    >>> test(1,2,3,4,5)
    15

    4)、关键字参数使用 “**参数名”传入参数。传入参数在函数中自动转换为dict。

    >>> def test3(name,**ss):
    ...   print('name:',name)
    ...   print('ss:',ss)
    ...
    >>> test3('zhangsan')
    name: zhangsan
    ss: {}
    >>> test3('zhangsan',s1='zhangsan')
    name: zhangsan
    ss: {'s1': 'zhangsan'}
    >>> test3('zhangsan',s1='zhangsan',s2='lisi')
    name: zhangsan
    ss: {'s1': 'zhangsan', 's2': 'lisi'}
    >>>
  • 函数使用
    1)、使用函数名、参数值调用。
    2)、将变量指向函数,并且使用变量执行。

    ss = abs(-11)
    ss
    11
    ss = abs
    ss(-10)
    11

3)、匿名函数lambda x:x*x,匿名函数参数为x,函数内容为x*x。
4)、装饰器 @函数名(参数)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章