Study Python 笔记 03 — 函数

本贴最后更新于 2205 天前,其中的信息可能已经水流花落

其实与 Java、php 基本类似,不过 python 设计得更简洁、灵活度更高。

[hermit auto="0" loop="0" unexpand="1" fullheight="0"]netease_songs#:541687281[/hermit]

以下为 python 中函数书写实例:

# -*- coding: utf-8 -*-
def my_abs(x):   #定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号 
 if x >= 0: 
return x 
else: 
return -x

可变参数

可变参数就是传入的参数个数是可变的

其实与定义一个list或tuple参数差不多,只不过在参数前面加了一个*号,在函数调用时自动组装为一个tuple,def calc(*numbers):

关键字参数

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

命名关键字参数

作用:限制关键字参数的名字。命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数。

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

调用方式如下:

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

参数组合定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

递归函数

经典递归:

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

尾递归:

def fact(n):
    return fact_iter(n, 1)

def fact_iter(num, product):
    if num == 1:
        return product
    return fact_iter(num - 1, num * product)

Python 标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3454 回帖 • 189 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    545 引用 • 672 回帖
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    171 引用 • 512 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...