博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3入门(四)——Python函数
阅读量:4995 次
发布时间:2019-06-12

本文共 2031 字,大约阅读时间需要 6 分钟。

一、概述

  python和其他高级语言一样,支持函数

  注意和scala不一样,结果必须使用return,否则默认return None!这和scala最后一个值作为返回是不一样的!

二、函数调用

  和其他语言一样,写出函数名,传入合适的参数即可,例如调用内置函数abs:

>>> abs(-1)1

  函数支持别名:

>>> a = abs # 变量a指向abs函数>>> a(-1) # 所以也可以通过a调用abs函数1

  如果传入了错误的参数,Python会报TypeError错误

  数据类型在Python中的转换可以通过相关的函数:

>>> int('1')1>>> str(1)'1'

三、函数定义

  定义也是使用和scala一致的def关键字:

def fun1(x):    if x > 0:        print('正数')        return x    else:        print('负数')        return -x

  如果什么都不做,那就用pass(如果返回空,使用return None

def nop():    pass

  由python这个函数定义也能知道,Python只能给我们做参数个数的检查,参数类型无法检查。要检查参数,只能通过手动编码使用instance实现:

def my_abs(x):    if not isinstance(x, (int, float)):        raise TypeError('bad operand type')    if x >= 0:        return x    else:        return -x

  并且,在Python这类有tuple的语言中,是可以返回多个值的!

def fun1(x,y):    if x > 0:        return x,y    else:        return x,y
a,b = fun1(1,2)

  当然,内在的是返回了一个tuple,只是返回值可以省略这个()来显示表明这是一个tuple

  默认参数:

    定义带有默认参数的函数时,注意默认参数必须放在后面且必须是不可变对象

def fun1(x,y=1):    if x > 0:        return x+y    else:        return x-y

  可变参数

    在参数前面加一个星号*即可,内部使用的是一个tuple包装的

def calc(*numbers):    sum = 0    for n in numbers:        sum = sum + n * n    return sum

    如果要使用list或者tuple作为可变参数,类似calc(list[0],list[1]),可以使用*进行参数转换:

calc(*list)

  关键字参数

    在参数前面加两个星号**即可,内部会把这个关键字参数转换为dict(也就是map)

def person(name, age, **kw):    print('name:', name, 'age:', age, 'other:', kw)
>>> person('Bob', 35, city='Beijing')name: Bob age: 35 other: {
'city': 'Beijing'}>>> person('Adam', 45, gender='M', job='Engineer')name: Adam age: 45 other: {
'gender': 'M', 'job': 'Engineer'}

  //内部接收的dict是外部的副本,不会对传入的作改变

  命名关键字参数(Python3独有)

    在参数中使用*作为一个分隔符即可,这样可以对传入的关键字参数作命名检查,只能传入指定名字的关键字参数

def person(name, age, *, city, job):    print(name, age, city, job)

  这样,就可以对入参作命名检查了,只能传入city=xx,job=xx:

person('Jack', 24, city='Beijing', job='Engineer')

  多种参数组合时,顺序必须严格控制:

    必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

四、递归函数

  和其他语言的递归函数是类似的:

def fact(n):    if n==1:        return 1    return n * fact(n - 1)

 

 

转载于:https://www.cnblogs.com/jiangbei/p/8916047.html

你可能感兴趣的文章
MySQL数据库表分区
查看>>
python多个装饰器的执行顺序
查看>>
岗顶-一图一世界
查看>>
一步步构造自己的vue2.0+webpack环境
查看>>
分页类
查看>>
Python装饰器的个人小理解
查看>>
为什么百万医疗险越来越多,到底选哪款?
查看>>
如何检测 51单片机IO口的下降沿
查看>>
扫描识别控件Dynamic .NET TWAIN使用教程:如何将事件添加到应用程序中
查看>>
创建和修改主键 (SQL)
查看>>
2018-2019 ICPC, NEERC, Southern Subregional Contest(训练记录)
查看>>
20145233 《信息安全系统设计基础》第7周学习总结
查看>>
linux设备驱动程序第3版学习笔记(例程2--hellop.c)
查看>>
玩转storm
查看>>
深度优先搜索算法(DFS)以及leetCode的subsets II
查看>>
CQOI2011 动态逆序对
查看>>
第一章 Web应用程序开发基础
查看>>
我的工作内容
查看>>
12_文件查找详解和特殊权限
查看>>
Linux基础初识(五)
查看>>