python基础——函数编程

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

一、实验目的

掌握函数编程

二、实验原理

在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)

image.png

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

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()方法明确说明。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。