Python——函数

一、定义

def <函数名>(<参数>):
    <函数体>
    return <返回值>
#计算 n!
def fact(n):
    s=1
    for i in range(1,n+1):
        s*=i
    return s

二、可变参数传递

1、函数定义时可为某些参数指定默认值,构成可选参数

def <函数名>(<非可选参数>,<可选参数>):
    <函数体>
    return <返回值>
#可选参数必须放在非可选参数后面
#计算 n!//m
def fact(n,m=1):
    s=1
    for i in range(1,n+1):
        s*=i
    return s//m

2、函数定义时可设计可变数量参数,即不确定参数的数目

def <函数名>(<参数>,*b):
    <函数体>
    return <返回值>
def fact(n,*b):
    s=1
    for i in range(1,n+1):
        s*=i
    for item in b:
        s*=item
    return s

#函数的返回值中,如果 return了多个数据,则用“()”括住,用“,”分隔,即元组类型
def fact(n,m=1):
    s=1
    for i in range(1,n+1):
        s*=i
    return s//m,n,m

#结果
fact(10,5)
为:(725760,10,5)

a,b,c=fact(10,5)
print(a,b,c)
为:725760 10 5

三、局部变量和全局变量

规则1:基本数据类型,无论是否重名,局部变量与全局变量不同
规则2:组合数据类型,如果局部变量为真实创建,则是全局变量

#规则1
n,s=10,100
def fact(n,m=1):
    s=1
    for i in range(1,n+1):
        s*=i
    return s #此处局部变量 s是3628800
print(fact(n),s) #此处全局变量 s是100

n,s=10,100
def fact(n,m=1):
    global s #可通过 global保留字在函数内部声明全局变量
    for i in range(1,n+1):
        s*=i
    return s #此处 s是全局变量362880000
print(fact(n),s) #此处全局变量 s被函数修改,是362880000

#规则2
ls=["F","f"]
def func(a):
    ls.append(a) #此处 ls是列表类型,未真实创建,等同于全局变量
    return
func("C") #全局变量 ls被修改
print(ls) #结果为:['F','f','C']

ls=["F","f"] #通过使用 []真是创建了一个全局变量列表 ls
def func(a):
    ls=[] #此处 ls是列表类型,真实创建,局部变量
    ls.append(a)
    return
func("C") #局部变量 ls被修改
print(ls) #结果为:['F','f']

四、代码复用与模块化设计

函数 和 对象 是代码复用的两种主要形式

  • 函数:将代码命名.在代码层面建立了初步抽象
  • 对象:属性和方法。<a>.<b><a>.<b>()。在函数之上再次组织进行抽象

紧耦合、松耦合

  • 紧耦合:两个部分交流很多,无法独立存在
  • 松耦合:两个部分交流很少,可以独立存在
  • 模块内部紧耦合,模块之间松耦合

五、函数递归

函数定义中调用自身的方式
两个关键特征

  • 链条:计算过程存在递归链条
  • 基例:存在一个或多个不需要再次递归的基例

实现:函数+分支语句,分别对应链条和基例

#求 n!
def fact(n):
    if( n==0):
        return 1
    else:
        return n*fact(n-1)

#字符串反转
def rva(s):
    if s=="":
        return s
    else:
        return rvs(s[1:])+s[0] #每次将首个字符放在字符串的最后

#斐波那契数列
def f(n):
    if n==1 or n==2:
        return 1
    else:
        return f(n-1)+f(n-2)

#汉诺塔
count=0
def hanoi(n,src,dst,mid):
    global count
    if n==1:
        print("{}:{}->{}".format(1,src,dst))
        count+=1
    else:
        hanoi(n-1,src,mid,dst)
        print("{}:{}->{}".format(n,src,dst))
        count+=1
        hanoi(n-1,mid,dst,src)

转载于:https://www.cnblogs.com/xxwang1018/p/11571490.html

### 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、付费专栏及课程。

余额充值