Lawliet|Python学习笔记3——函数

1.函数的定义

  • 函数是一段具有特定功能的、可重用的语句组
  • 函数是一种功能的抽象,一般表达特定的功能
  • 用于降低编程难度和代码复用
    def <函数名>(<参数>):
    <函数体>
    return <返回值>
#计算n!
def fact(n):
	s=1
	for i in range (1,n+1)
		s*=i
	return s
  • 函数定义时,所指定的参数是一种占位符
  • 函数定义后,如不被调用,就不会被执行

2.函数的调用

  • 调用时要给出实际的参数
  • 实际参数替换定义中的参数
  • 函数调用后得到返回值(也可以没有返回值)
#与上一段代码接应
a=fact(10)
print(a)

3.函数的参数

a.参数定义

  • 函数可以没有参数,但结构必须保留
    def <函数名>():
    <函数体>
    rerurn <返回值>
  • 可选参数
    def <函数名>(<非可选参数>,<可选参数>):
    <函数体>
    return <返回值>
#如果不给第二个参数m,则m作为1参与计算
def fact(n,m=1):
	s=1
	for i in range (1,n+1)
		s*=i
	return s//m
  • 可变参数,不确定参数数量
    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

b.参数传递

  • 函数调用时,参数可以按照位置或名称方式传递
    在这里插入图片描述

c.关于*符号在参数位置

*

  • 当*出现在函数定义的参数中时,表示任意数目参数收集
  • *是用元组的形式收集不匹配的位置参数。当这个函数调用时,Python将所有位置相关的参数收集到一个新的元组中,并将这个元组赋值给变量args
def f(*args):
	print(args)
f(1,2,3,4)
------>(1,2,3,4)
def f(a,*args):
	print(args)
f(1,2,3,4)
------>(2,3,4)

**

  • **只对关键字参数有效
  • **允许将关键字参数转化为字典,可以使用键调用来进行步进或字典迭代
def f(**args):
	print(args)
f(a=1,b=2)
------>{'a':1,'b':2}

参数混合

def f(a,*pargs,**kargs):
	print(a,pargs,kargs)
f(1,2,3,x=4,y=5)
------>1 (2,3) {'x':4,'y':5}

函数调用时出现*

def func(a,b,c,d):
	print(a,b,c,d)
args=(1,2,3,4)
func(*args)
------>1 2 3 4
def func(a,b,c,d):
	print(a,b,c,d)
kargs={'a':1,'b':2,'c':3,'d':4}
func(**kargs)
------>1 2 3 4

4.函数的返回值

  • 函数可以有返回值,也可以没有,可以有return,也可以没有
  • 函数可以返回0个或多个结果
def fact(n,m=1):
	s=1
	for i in range(1,n+1):
		s*=i
	return s//m,n,m

在这里插入图片描述

5.局部变量和全局变量

  • 局部变量是程序内部使用的变量
  • 整个程序使用的变量叫全局变量

a.使用规则

(1)局部变量是函数内部的占位符,与全局变量可能重名但是不同
(2)函数运算结束后,局部变量被释放
(3)global可以用于在函数内部使用全局变量
在这里插入图片描述
在这里插入图片描述
(4)局部变量为组合数据类型且未创建,等同于全局变量
在这里插入图片描述
在这里插入图片描述

  • 基本数据类型,无论是否重名,局部变量和全局变量都不同
  • 组合数据类型,如果局部变量未真实创建,则是全局变量
  • 可以通过global保留字在函数内部声明全局变量

6.lambda函数

  • 该函数将函数名作为函数结果返回
  • 该函数是一种匿名函数,即没有名字的函数
  • 使用lambda保留字定义,函数名是返回结果
  • lambda函数用于定义简单的、能够在一行内表示的函数
    <函数名>=lambda <参数>:<表达式>
f=lambda x,y:x+y
f(10,15)
#输出25
f=lambda:"lambda函数"
print(f()#输出:lambda函数

7.补充:函数分类

  • 内置函数:系统提供
  • 非内置函数:import导入使用
    导入方法:
    import 模块名称
    from 模块名称 import*
import math
math.sin(30)
from math import *
sin(30)

导入模块指定的函数或属性
from 模块名 import 函数名

from math import sin
sin(30)
  • 自定义函数
  • 库函数:内置库函数/非内置库函数
    内置库函数:import导入使用
    非内置库函数:也叫做第三方库,需要安装使用

版权声明:本文为qq_41624771原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。