Python--函数

一、什么是函数

函数就是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,能提高应用的模块性,和代码的重复利用率,一般都是定义一个函数来调用它,提高代码的利用率。

二、定义一个函数

在现实编程中,我们可以通过定义自己想要功能的函数来定义,以下简单的规则用来定义函数:
^函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
^任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
^函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
^函数内容以冒号 : 起始,并且缩进。
^return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

在这里插入图片描述
语法格式:
Python 定义函数使用 def 关键字,一般格式如下:
def函数名(参数列表):
函数体

实例:

def hello():
    print("hello world!")
    return
print(hello())

输出:

hello world!

比较数值大小:

def max(a, b):
    if a > b:
        return a
    else:
        return b
a = 6
b = 5
print(max(a, b))

输出:

6

计算面积函数:

def area(width,height):
    return width * height
w = 4
h = 5
print("widh =",w,"height =",h,"area =",area(w,h))

输出:

widh = 4 height = 5 area = 20

三、调用函数

当你定义完一个函数之后就可以通过另一个函数来调用执行,也可以直接从 Python 命令提示符执行。
如下实例调用了 printme() 函数:

def printme(str):
    print(str)
    return

printme("调用用户自定义函数!")
printme("再调用一次!")

输出:

调用用户自定义函数!
再调用一次!

四、参数传递

在Python中也存在可变类型和不可变类型,比如a=[1,2,3],作为列表类型,可以再赋值 a[2]=5 则是将 list a 的第三个元素值更改,本身a没有动,只是其内部的一部分值被修改了;而变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。
Python传不可变对象实例:

def change(a):
    print(id(a))  # 指向的是同一个对象
    a = 100
    print(id(a))  # 一个新对象


a = 10
print(id(a))
change(a)

输出:

2272194396688
2272194396688
2272194399568

可以看见在调用函数前后,形参和实参指向的是同一个对象(对象 id 相同),在函数内部修改形参后,形参指向的是不同的 id。
传可变对象实例:

def changeme( mylist):
    #"修改传入的列表"
    mylist.append([1,2,3,4])
    print("函数内取值:",mylist)
    return
mylist = [10,11,12]
changeme(mylist)
print("函数外取值:",mylist)

输出:

函数内取值: [10, 11, 12, [1, 2, 3, 4]]
函数外取值: [10, 11, 12, [1, 2, 3, 4]]

五、参数

以下参数是调用函数时可使用的正式参数类型:
^必需参数
^关键字参数
^默认参数
^不定长参数
必需参数:须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用 printme() 函数,你必须传入一个参数,不然会出现语法错误:

#必需参数
def printme(str):
    #"打印任何传入的字符串"
    print(str)
    return
#调用printme函数,不加参数会报错
printme()

输出:

Traceback (most recent call last):
  File "F:\python\Python基础\Day15函数.py", line 67, in <module>
    printme()
TypeError: printme() missing 1 required positional argument: 'str'

在这里能看到不调用函数的话是会报错的,只要在printme里面加入str去调用它就能输出对应的代码。
关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值,以下实例在函数 printme() 调用时使用参数名:

#关键字参数
# 可写函数说明
def printme(str):
    "打印任何传入的字符串"
    print(str)
    return
# 调用printme函数
printme(str="九牧Python")

输出:

九牧Python
#可写函数说明
def printinfo( name, age ):
   "打印任何传入的字符串"
   print ("名字: ", name)
   print ("年龄: ", age)
   return
 
#调用printinfo函数
printinfo( age=20, name="九牧" )

输出:

名字:  九牧
年龄:  20

默认函数:调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值。

# 可写函数说明
def printinfo(name, age=35):
    "打印任何传入的字符串"
    print("名字: ", name)
    print("年龄: ", age)
    return
# 调用printinfo函数
printinfo(age=50, name="九牧")
print("------------------------")
printinfo(name="九牧")

输出:

名字:  九牧
年龄:  50
------------------------
名字:  九牧
年龄:  35

不定长参数:一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名,实例如下:

# 可写函数说明
def printinfo(arg1, *vartuple):
    "打印任何传入的参数"
    print("输出: ")
    print(arg1)
    print(vartuple)
# 调用printinfo 函数
printinfo(70, 60, 50)

输出:

输出: 
70
(60, 50)

六、匿名函数

Python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

实例如下:

# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2

# 调用sum函数
print("相加后的值为 : ", sum(10, 20))
print("相加后的值为 : ", sum(20, 20))

输出:

相加后的值为 :  30
相加后的值为 :  40

七、return语句

return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的 return 语句返回 None。之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:

# 可写函数说明
def sum( arg1, arg2 ):
   # 返回2个参数的和."
   total = arg1 + arg2
   print ("函数内 : ", total)
   return total
 
# 调用sum函数
total = sum( 10, 20 )
print ("函数外 : ", total)

输出:

函数内 :  30
函数外 :  30

函数是Python中很重要的知识点,需要重点学!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值