python基础——函数编程

文章介绍了Python中的函数编程概念,包括函数定义、返回值、参数传递、可调用对象等。通过示例展示了如何定义和调用函数,如计算斐波那契数列,以及函数对参数的影响。同时提到了列表、元组、字典和集合在参数传递中的应用。
摘要由CSDN通过智能技术生成

python基础——函数编程



一、实验目的

掌握函数编程

二、实验原理

在Python中,定义函数的语法如下:

def 函数名([参数列表]):

‘’‘注解’‘’

函数体

定义函数时,需要注意的问题:①函数形参不需要声明其类型,也不需要指定函数返回值类型,②即使该函数不需要接受任何参数,也必须保留一对空的圆括号,③括号后面的冒号必不可少④函数体相对于def关键字必须保持一定的空格缩进。

三、实验环境

Python 3.5以上

PyCharm

四、实验内容

函数编程

五、实验步骤

在Python中,定义函数时不需要声明函数的返回类型,而是使用return语句结束函数执行的同时返回任意类型的值,函数返回值类型与return语句返回表达式的类型一致。无论return语句出现在函数的什么位置,一旦得到执行将直接结束函数的执行。如果函数没有return语句或者执行不返回任何值的return语句,Python将认为该函数以return None结束,即返回空值。

1.下面的函数用来计算斐波那契数列中小于参数n的所有值。

#定义函数,括号里的n是形参
def fib(n):
    #accept an in integer n. return the numbers less than n in Fibonacci sequence.
    a,b=1,1
    while a<n:
        print(a,end=' ')
        a,b=b,a+b
    print()

#调用该函数的方式为:
fib(1000)

在这里插入图片描述

注意:在定义函数时,开头部分的注释并不是必须的,但是如果为函数的定义加上一段注释的话,可以为用户提供友好的提示和使用帮助。

2.在调用函数时,一定要注意函数有没有返回值,以及是否会对函数实参的值进行修改。

a_list=[1,2,3,4,9,5,7]
print(sorted(a_list))
#原列表内容没变
print(a_list)
#列表对象的sort()方法没有返回值
print(a_list.sort())
print(a_list)

在这里插入图片描述

3.拓展知识:函数属于可调用对象,由于构造函数的存在,类也是可以调用的。另外,任何包含__call__()方法的类的对象都是可调用的。

def linear(a,b):
    #函数是可以嵌套定义的
    def result(x):
        return a*x+b
    return result

下面代码演示了可调用对象类的定义

class Linear:
    def __init__(self,a,b):
        self.a,self.b=a,b
    def __call__(self,x):
        return self.a*x +self.b

使用上面的嵌套函数和类这两种方式中任何一个,都可以通过以下的方式来定义一个可调用的对象:

taxes=linear(0.3,2)
#然后通过下面的方式来调用该对象
taxes(5)

在这里插入图片描述

函数定义时,圆括号内是使用逗号分隔开的形参列表,一个函数可以没有参数,但是定义和调用时一对圆括号必须要有,表示这是一个函数并且不接受参数。函数调用时向其传递实参,根据不同的参数类型,将实参的值或引用传递给形参。

4.对于绝大多数情况,在函数内部直接修改形参的值不会影响实参。

def addOne(a):
    print(a)
    #得到新的变量
    a+=1
    print(a)

a=3
addOne(a)
print(a)

在这里插入图片描述
5.在一些特殊情况下,可以通过特殊的方式在函数内部修改实参的值。

#修改列表元素值
def modify(v):
    v[0]=v[0]+1

a=[2]
modify(a)
print(a)
#为列表增加元素
def modify(v,item):
    v.append(item)

a=[2]
modify(a,3)
print(a)
#修改字典元素值或字典增加元素
def modify(d):
    d['age']=38

a={'name':'Dong','age':37,'sex':'Male'}
modify(a)
print(a)

在这里插入图片描述

6.调用含有多个参数的函数时,可以使用Python列表,元组、集合、字典以及其他可迭代对象作为实参,并在实参名称前加一个星号“*”,Python解释器将自动进行解包,然后传递给多个单变量形参。

def demo(a,b,c):
    print(a+b+c)

#列表
seq=[1,2,3]
demo(*seq)
#元组
tup=(1,2,3)
demo(*tup)
#字典
dic={1:'a',2:'b',3:'c'}
demo(*dic)
#集合
Set={1,2,3}
demo(*Set)

在这里插入图片描述

注意:字典若想作为实参时默认使用字典的“键”,如果需要将字典中“键:值”元素作为参数则需要使用items()方法明确说明,如果需要将字典的“值”作为参数则需要调用字典的values()方法明确说明。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i阿极

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值