python再复习(3)函数

本文介绍了Python中的函数,包括位置参数、默认参数、可变参数的使用。通过举例说明了如何定义和调用函数,特别强调了参数的顺序规则,并提到了递归的概念作为未来探讨的话题。

环境:win7 pycharmCE_2017.2 python3.6.2

6.函数

函数的简介、调用函数、定义函数就不再赘述。
关于习题,python写一个接一元二次方程:

# -*- coding: utf-8 -*-

import math


def quadratic(a, b, c):
    # 先求判别式
    deta = ((b) * (b)) - (4 * (a) * (c))
    if (deta < 0):

        x1_1 = ((-1) * (b)) / (2 * (a))
        x1_2 = ((math.sqrt((-1) * deta)) / (2 * (a)))
        print('此方程有共轭复根,第一个复根为: \n' + str(x1_1) + '+' \
        + str(x1_2) + 'i')
        print('第二个复根为: \n' + str(x1_1) + '-' + str(x1_2) + 'i')
        x1_1 = ((-1) * (b)) / (2 * (a))
        x1_2 = ((math.sqrt((-1) * deta)) / (2 * (a)))
    elif (deta == 0):
        print('此方程有相同解: ')
        x1and2 = (-1) * (b) / (2 * (a) * (c))
        print(x1and2)
    else:
        x1 = ((-1) * (b) + (math.sqrt(deta))) / (2 * (a))
        print('此方程第一个解为: ' + str(x1))
        x2 = ((-1) * (b) - (math.sqrt(deta))) / (2 * (a))
        print('此方程第二个解为: ' + str(x2))


p = []
for x in (1, 2, 3):
    print('请输入ax^2+bx+c的' + chr(96 + x))
    p.append(int(input()))
quadratic(p[0], p[1], p[2])

接下来说一说函数的参数
对于一个简单的函数,例如

def power(x):
    return x * x

x就是位置参数
在调用这个函数的时候,必须传入也必须传入1个位置参数。
对于:

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

x则为位置参数,n为默认参数。如果是power(2,3),那计算的就是2的3次方,输入power(2)算得是2的平方,也就是说,位置参数依然要输入,而默认参数可以不输入,输入了就按你输入的算,不输入就按默认的算。使用默认参数要注意一个变量的坑,在廖老师这章节有写
对于函数:

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

numbers是一个可变参数,可以用calc(2,3)也可以calc(2,3,4,5,6)等等,个数不限可编。而对于现成的list和tuple,可以:

a=[2,4,5]
calc(*a)

在函数内部,a中的元素会被组装成一个元组来使用。
对于关键字参数暂时没什么讲的,区别于可变参数的的一个号搭配列表和元组,关键字参数搭配得是两个号和字典。命名关键字参数暂时也没什么说的。
廖老师说过:

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

说说递归,递归神,迭代人,我还是个凡人,暂时说不出什么门道,先挖个坑。

### Python 函数期末复习资料总结 Python 函数是编程中的核心概念之一,掌握函数的定义、调用、参数传递以及返回值等知识点对于理解程序设计至关重要。以下是关于 Python 函数的相关复习资料总结: #### 1. 函数的基本定义和调用 函数是一种封装代码块的方式,允许重复使用和模块化编程。在 Python 中,使用 `def` 关键字定义函数[^2]。函数的基本结构如下: ```python def function_name(parameters): """文档字符串""" # 函数体 return value # 可选 ``` - 函数名应遵循变量命名规则。 - 参数可以是位置参数、关键字参数或默认参数。 - 返回值通过 `return` 语句指定,若无 `return`,则默认返回 `None`。 #### 2. 参数类型 Python 支持多种类型的函数参数[^3]: - **位置参数**:按顺序传递给函数的参数。 - **默认参数**:带有默认值的参数,调用时可省略。 - **可变参数**:支持传递任意数量的参数,分为 `*args`(元组)和 `**kwargs`(字典)。 - **关键字参数**:通过键值对形式传递参数,不依赖于位置。 示例代码: ```python def greet(name, message="Hello"): print(f"{message}, {name}!") greet("Alice") # 使用默认参数 greet("Bob", "Good morning") # 覆盖默认参数 ``` #### 3. 匿名函数 匿名函数使用 `lambda` 关键字定义,适用于简单的单行表达式[^4]。其语法为: ```python lambda 参数: 表达式 ``` 示例代码: ```python double = lambda x: x * 2 print(double(5)) # 输出 10 ``` #### 4. 嵌套函数与闭包 嵌套函数是指在函数内部定义另一个函数。闭包是一种特殊的嵌套函数,能够访问外部函数的局部变量,即使外部函数已经结束执行[^5]。 示例代码: ```python def outer_function(x): def inner_function(y): return x + y return inner_function closure = outer_function(10) print(closure(5)) # 输出 15 ``` #### 5. 装饰器 装饰器是一种用于修改函数或方法行为的高级功能[^6]。它通过包装函数来扩展功能,而无需修改原函数代码。 示例代码: ```python def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @my_decorator def say_hello(): print("Hello!") say_hello() ``` #### 6. 递归函数 递归是指函数直接或间接调用自身的过程。递归需要一个终止条件以避免无限循环[^7]。 示例代码: ```python def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5)) # 输出 120 ``` #### 7. 全局变量与局部变量 函数内部定义的变量为局部变量,仅在函数作用域内有效。如果需要修改全局变量,则需使用 `global` 关键字声明[^8]。 示例代码: ```python x = 10 def modify_global(): global x x += 5 modify_global() print(x) # 输出 15 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值