Python基础篇------函数

1. 函数的引用:

和大多数编程语言一样,python函数的主要作用就是打包代码。我们将代码打包起来有两个显著的好处,第一,就是能够最大程度实现代码的重复使用减少冗余的代码。第二,就是将降低代码结构的复杂度,将各个功能分块封装,增加代码的可读性。

一个函数对应一个功能,就比如我们熟悉的BIF函数就是Python为我们预先准备好的函数。比如print()函数是用来打印信息,input()函数是用来接收用户的输入。

2. 函数的定义:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。

  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

  • 函数内容以冒号起始,并且缩进。

  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

    根据代码需要可以选择性添加参数和return返回值。

语法:

def 函数名(参数):
	"函数文档字符串"
	代码1
	代码2
	......
    return 表达式

现在我们创建一个函数名为demo,无参数和返回值,代码块中的pass代表一个占位符,表示当前我们只是创建了这个函数,但未给函数赋能。相当于现在的demo就是一个毛坯房,里面啥都没有。

def demo():
	pass

3. 函数的调用:

函数作为一个被封装的代码块需要调用才能使用。不同的需求参数可有可无,根据你自己定义的函数判断是否需要传递参数,如果你定义的函数中有参数,你就必须将参数传递进去,如果你定义的函数没有参数,那么你就不必传入参数进入。

语法:

函数名(参数)

举例:

# 不带参数的函数
def demo1():
	print('我是demo1函数')
# 带参数的函数
def demo2(name):
	print(f"我是{name}函数")

    
demo1()
demo2("demo2")		# 这里别忘记加引号啦!!!

 

4. 函数参数的作用:

4.1 必备参数:

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。调用demo()函数,你必须传入一个参数,不然会出现语法错误。

现在我们实现一个需求:完成两个数的的加法运算。

# 定义函数的同时定义了接收用户数据的参数a和b
def demo(a, b):
    result = a + b
    print(result)


# 调用函数时传入真实数据10和20
demo(10, 20)

 

4.2 关键字参数:

关键字参数不需要一定按照正确的顺序进行传入参数,只需要保证关键字对应即可。

现在我们实现一个需求:输出一个人的姓名和年龄

# 定义函数的同时定义了接受用户传入的参数name和age
def demo(name,age):
	print(f'我是{name},我今年{age}岁了!!!')
    
demo(age=18,name="张三")

 Python自定义函数中有两种不定长参数,第一种是*XXX,在传递额外的参数时可以不指定参数名,直接传入参数即可,返回的是一个元组。第二种是(**XXX),这种类型的返回的是一个字典,传入时需要指定参数名。

# 传递一个参数
def demo(name):
    print(f"我是{name}")


# 第一种 *XXX
def demo1(*args):
    print(args)


# 第二种 **XXX
def demo2(**kwargs):
    print(kwargs)


demo('张三')
demo1(1, 2, 3, 4, 5)
demo2(name="张三", age=18, love="篮球")

 这边需要注意的是:当参数的传递中这三种类型参数都存在时,第一种必须在最前面,不然就会造成前两种把数据都拿走了,最后一个参数没有数据

举个例子:

def demo(num,*args,**kwargs):
	print(num)
	print(args)
	print(kwargs)
	
demo(1,2,3,4,5,a=1,b=2)

 

def demo(*args,num,**kwargs):
	print(num)
	print(args)
	print(kwargs)
	
demo(1,2,3,4,5,a=1,b=2)

 如果说实在想用这个,又怕出现红色报错的话,那么我们就可以采用上面的关键字参数解决问题啦。

def demo(*args, num, **kwargs):
    print(num)
    print(args)
    print(kwargs)


demo(1, 2, 3, 4, num=5, a=1, b=2)

 

5. 函数的返回值:

在python中的返回值的与C语言的返回值类似,只是python返回的参数类型不唯一,不像C语言只能返回与函数类型相同的返回值。

def demo(a, b):
	print(f"函数内部的----{a}+{b}={a+b}")
	return a+b

c = demo(2,3)
print(f"函数外部的-----{c}")

我们在这里定义一个demo函数,并在其定义形参a和b,我们将demo中传递实参2和3并将返回的结果赋值给c。

6. 函数的作用域:

所谓的作用域,就是当前函数的一个作用范围,就相当于咱们学过的自变量的取值范围一样。

6.1 局部变量:

所谓的局部变量,就是在一个函数中所定义的变量只能在这个函数中使用,不能给其他函数使用,若别的函数中出现了和该局部变量函数名一样的变量,那么默认这个函数变量是一个新的变量,只是名字相同罢了。

 

我们可以发现我们调用函数将num输出出来了,但是我们在demo函数外部输出num时发生报错(当前变量num并没有定义),因此我们可以发现函数内部可以调用自己的函数,但是函数外部就不能调用啦,所以说自己的就是自己的嘛。

6.2 全局变量:

所谓的全局变量就是为了解决“自己的就是自己的这一个问题”。就好比你现在要给一个基金投资,然后人家就会让你把你的钱投资进去,在这个过程中你的钱也会发生变化,但也还是你的钱。

使用全局变量,我们采用的是global进行一次声明,让python解释器知道这是一个全局变量。

def demo1():
    global num
    num = 10
    print(f"我是全局变量num,我的值是:{num}")


demo1()
print(f"调用demo1中的变量num,它的值为{num}")

 以上是我对函数初步学习的一个总结,如果上面内容存在问题,希望大家能够指出,我们共同学习进步!!!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值