Python(3)——函数

本文详细介绍了Python中的函数概念,包括函数的定义与调用、参数类型(如普通参数、可变参数、关键字参数)、递归函数的应用等核心内容。

/============================
以下所有内容,均来自 廖雪峰 的官方网站,
Python 教程。

链接地址:http://www.liaoxuefeng.com
============================/

  在 JavaScript 中我们经常做的就是将实现一个功能的所有代码封装进一个函数里面,只留出参数接口,供调用者自定义。python 中的函数也是一样,而且 python 同样内置了很多有用的函数,可供直接调用。

1、调用函数

内置函数的调用:
abs() 函数的作用是取绝对值,我们使用只需要 abs(12.34)。

自定义函数调用:

#!/usr/bin/python
# -*- coding: utf-8 -*-
# 引入数学模块中的方法
from math import sqrt
from math import tan

'''
高阶函数应用,返回一个数字不同方法计算结果
'''
def same(num, *kw):
    # 参数检查
    if not isinstance(num, (int, float)):
        raise TypeError('bad operand type')

    # 初始化结果字典
    rel = {}
    # 循环计算可变参数
    for func in kw:
        try:
            rel[func.__name__] = func(num)
        except ValueError:
            rel[func.__name__] = 'None'
    # 返回结果字典
    return rel
# 函数调用
result = same(-10.5, sqrt, abs, tan)
# 结果输出
print(result)

same( )就是一个定义的函数,result = same(-10.5, sqrt, abs, tan)是函数调用。

2、定义函数

def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n*n
    return sum
# list数组
print(calc([1,2,3]))
# tuple元祖
print(calc((1,2,3)))
def calc(numbers):表示定义一个函数

函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

3、函数的参数

普通参数:

def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n*n
    return sum
# list数组
print(calc([1,2,3]))
# tuple元祖
print(calc((1,2,3)))

结果:14 14

可变参数:

# 可变参数
def calc1(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n*n
    return sum
print(calc1(1,2,3,4))

结果:30

关键字参数:

# 关键字
def print_scores(**kw):
    print('      Name  Score')
    print('------------------')
    for name, score in kw.items():
        print('%10s  %d' % (name, score))
    print()

print_scores(Adam=99, Lisa=88, Bart=77)

data = {
    'Adam Lee': 99,
    'Lisa S': 88,
    'F.Bart': 77
}

print_scores(**data)

结果:

      Name  Score
------------------
      Adam  99
      Bart  77
      Lisa  88

      Name  Score
------------------
    Lisa S  88
  Adam Lee  99
    F.Bart  77

key 可以参入 dict 键值对形式的参数。

4、递归函数

def fact(n):
    if n==1:
        return 1
    return n*fact(n-1)
n = input('请输入n:')
n = int(n)
print(fact(n))

结果:

请输入n:10
3628800

如果我们计算fact(5),可以根据函数定义看到计算过程如下:

===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120
### Python 函数用于计算思维训练 #### 方法和示例 Python 提供了一种强大的方式来进行计算思维训练,特别是通过函数的设计与实现。函数不仅有助于代码的模块化设计,还促进了逻辑思考能力的发展。 #### 问题分解 一个问题可以被拆解成更小的部分以便更容易解决。例如,在处理复杂的数据集时,可以通过编写多个小型专用功能来逐步解决问题[^1]。下面是一个具体的例子: 假设有一个需求是要找出列表中所有偶数的位置索引。这个问题可以通过构建辅助函数 `is_even` 来判断单个数字是否为偶数,再利用另一个遍历整个列表并收集符合条件项位置的功能完成最终目标。 ```python def is_even(number): """Check if a number is even.""" return number % 2 == 0 def find_indices_of_evens(lst): """Find indices of all even numbers in the list.""" result = [] for index, value in enumerate(lst): if is_even(value): result.append(index) return result ``` 这段代码展示了如何将大任务分割成易于管理和理解的小部分——这正是计算思维的核心之一。 #### 自定义函数的应用 除了上述提到的问题分解技巧外,还可以创建自定义函数以满足特定的需求。比如想要统计一段文字里单词的数量,就可以按照以下步骤操作[^3]: 1. 定义一个新的函数接受字符串作为输入; 2. 使用内置 split() 方法把句子切分成词组; 3. 计算得到的结果集合大小即代表总共有多少个不同词语; 这里给出完整的解决方案如下所示: ```python def word_count(text): words = text.split() unique_words = set(words) return len(unique_words) example_text = "This is an example sentence with some repeated words like this and that" print(word_count(example_text)) ``` 此程序片段说明了怎样运用自定义函数有效地解决了实际生活中的一个小挑战。 #### 实现加法运算器 为了进一步展示 Python 函数对于培养计算思维方式的重要性,考虑这样一个场景:开发一个简单的计算器应用程序,其中一部分负责执行两数值相加的任务。该过程涉及到了基本算法的理解以及良好的编码习惯养成等方面[^4]。 ```python def add_numbers(a, b): """Add two given numbers together""" sum_result = a + b return sum_result num1 = float(input("Enter first number: ")) num2 = float(input("Enter second number: ")) result = add_numbers(num1, num2) print(f"The addition of {num1} and {num2} equals to {result}") ``` 以上实例强调了函数在简化重复工作流程方面的作用,同时也体现了结构清晰、易于调试的优点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值