Day10 Python课程学习内容

1 实参的类型

实参可以传递任意类型的对象,且调用函数的时候是不会检查实参的类型。

def func(a, b):
	print(a + b)
func(1,2)
func('a', 'b')

在这里插入图片描述
在函数中重新给形参重新赋值,不会影响其他的变量。
在这里插入图片描述
如果是一个列表,尝试修改列表里面的元素,如果现在的形参执行的是一个对象,通过形参修改对象时,会影响到所有指向的对象的变量。
在这里插入图片描述

2 不定长参数

def s(a,b):
	print(a + b)
s(123,345,789)
s(123)

在这里插入图片描述
综上情况,在定义函数的时候,可以在形参的前面加上一个*。形参即可获取所有人的实参,将获取的实参放到一个元组中。

def s(*a):
    print('a = ',a)
s()
s(1,2,3)
s(4)
s(1,2,'a')

在这里插入图片描述
注意:注意带的形参只能有1个,会发生报错。
在这里插入图片描述
不定长参数不一定非要在后面,但是一定要带
后面的参数,都必须以关键字的形式来进行传参。
在这里插入图片描述
在这里插入图片描述
*形参只能接收位置参数。
在这里插入图片描述


** 形参可以接收其他关键字参数,他会将这些参数统一保存到一个字典当中。
key 就是参数的名字,value为参数的值。
** 形参只能有一个,并且只能卸载所有参数的后面。处理关键字参数。
在这里插入图片描述

3 函数的返回值

返回值就是函数执行之后返回的结果。使用return来指定函数的返回值。
可以直接使用函数的返回值,也可以通过一个变量来接收函数的返回值。
return后面返回任意对象,也可以返回函数。

def fn():
	return 123

r = fn()
print(r)

在这里插入图片描述
当函数后面没有return或者只有return,则等于return None。
在这里插入图片描述

在函数中,return后面的代码都不会执行。return一旦执行函数自动结束。

def fn2():
	print(1)
	return
	print(2)
fn2()

在这里插入图片描述

4 文档字符串

help()是Python中内置函数,通过help()函数可以查询Python中函数的⽤法,在定义函数时,可以在函数内部编写⽂档字符串,⽂档字符串就是对函数的说明

def fn(a:int,b,c):
    '''
    这是一个文档字符串的实例
    参数的作用
    :param a: 作用 类型 默认值...
    :param b: 作用 类型 默认值...
    :param c: 作用 类型 默认值...
    :return: 返回值的类型是什么....
    '''
    return 10
help(fn)

在这里插入图片描述

5 函数的作用域

作用域就是变量生效的区域。

  • 全局作用域:全局作用域在程序执行时创建,在程序执行结束时销毁所有函数以外的区域都是全局作用域。
    在全局作用域中定义的变量,都是全局变量,全局变量可以在程序的任意位置进行访问。
  • 函数作用域:函数作用域在函数调用时创建,在调用结束时销毁
    函数每调用一次就会产生一个新的函数作用域
    在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问。
a = 20
def fn():
	a = 10
	print('内部函数:a = ',a)
fn()
print('外部函数:a = ',a)

在这里插入图片描述
希望在函数内部修改全局变量的时候,则需要使用global关键字,来声明变量。

a = 20
def fn():
    global a 
    a = 10
    print('函数内部a =',a)
fn()
print('函数外部a =', a)

在这里插入图片描述
a变成了全局变量,值发生改变。

6 递归函数

递归是解决问题的一种方式,和循环比较类似。将大问题分解为多个小问题,直至无法分解,再来解决问题。

# 	10 的阶乘
n = 10
for i in range(1,10):
	n *= i
print(n)

在这里插入图片描述
使用函数递归的方法。

# 求任意数的阶乘
def fn(n):
	result = n
	for i in range(1,n):
		result *= i
	return result
print(fn(10))

在这里插入图片描述
1.基线条件
问题可以被分解为最小的问题,当满足基线条件时,递归就不在执行。
2.递归条件
将问题可以继续分解的条件

def fn(n):
	# 参数n 要求阶乘的数字
	# 1 基线条件
	# 判断如果n为1的时候,结束递归
	if n == 1:
		return 1	
	# 2 递归条件
	return n * fn(n-1)
print(fn(10))

在这里插入图片描述

# 求一个数的随意阶乘
def fn(n,i):
	if i==1:
		return n
	return n*fn(n,i-1)
print(fn(5,6))

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值