python 函数

05函数

函数参数

  1. 必备参数 默认参数
# x为必备参数 y为默认参数
def num(x, y = 10):
	print(x + y)
num(5)
num(5,20)
  1. 元组不定长
#可以不传值,值可多个
def nums(*args):
	print(args)
nums([50,60],{'NAME':18})
  1. 字典不定长
#可以不传值,值可多个
def numb(**kwargs):
	print(kwargs)
numb(a = 8, k = '你好') #注意:传值以键等于值的方式传
  1. 各种参数结合
def number(x, y = 10, *args, **kwargs):
	print(x)
	print(y)
	print(args)
	print(kwargs)
number(5,20,30,40,[1,2],[3,4],a = 50,b = '六十')
# 字典不定长后不允许再传入单个的值

函数返回

def num(x,y) -> str: #帮助阅读,告知函数返回值的类型
	print(x)
	print(y)
	return '结果'
a = num(5,6)

函数拆包

def fuc(**kwargs):
	print(kwargs)
a = {'a': 6, 'b': 7}
fuc(**a)

函数作用域

函数里面不可以修改不可变对象:数值、str、tuple

li = [5,6]
a = 10
def func():
	a = a+1 #会报错,不能修改全局变量a
	li.append(7) #不会报错,可以修改
	print(a)
	print(li)

使用global声明全局变量

a = 10 #a为全局变量
def func():
	global a #global声明全局变量
	a = a+1
	print(a)
func()
print(a) #a的值改变

使用nonlocal声明局部变量

def func():
	x = 100 #x为局部变量
	def number():
		nonlocal x #声明外部嵌套的函数变量,不能用global
		x = x+1 
		print(x)
	number()
func()

闭包

#外层函数返回内层函数体,使得外部能够使用内部的函数
def yingxiong():
	lv = 1
	def add(): #加血
		nonlocal lv
		lv += 1
		return lv
	def down(): #减血
		nonlocal lv
		lv -= 1
		return lv
	return add, down
a,b = yingxiong()
a()
b()

匿名函数

匿名函数 lambda,x表示参数,自带return

s = lambda x: x+1
print(s(5))

过滤器 filter

li = [i for i in range(0,101,2)]
def funx(x):
	if x<50:
	return x
f = filter(funx,li) #将列表li进行过滤,以函数funx作为过滤标准,过滤结果用f接收
print(list(f)) #f接收的是列表数据,显示数据时需要转成列表

用匿名函数帮助过滤

li = [i for i in range(0,101,2)]
f = filter(lambda x:x<50,li)
print(list(f))

统一计算 map

li = [i for i in range(1,11)]
def funz(x):
	return x*10
m = map(funz,li)
print(list(m))
#使用匿名函数
n = map(lambda x:x*10,li)
print(list(n))

练习

  1. 一个列表由四个元组组成,每个元组都是四个数字组成,现在要求对这个列表排序,排序规则是按照每个元组的第二个元素排序
li = [(2,3,4,5),(8,3,2,9),(3,2,5,6),(6,7,3,9)]
li.sort(key = lambda x:x[1])
print(li)
  1. 实现isPrime()函数,参数是整数,如果整数是质数,返回True,否则返回False
def isPrime(number):
	if str(number.isdigit()) == False:
		return False
	elif number <= 1:
		return False
	else:
		for i in range(2,number):
			if number % i == 0:
				return False
			else:
				return True
  1. 利用递归函数,实现一个阶乘函数,支持正数和负数的阶乘
def func(x):
	if x == 0:
		return 1
	elif x > 0:
		return x * func(x-1)
	else:
		return x * func(x+1)
  1. 定义一个函数,输入字符串,如果字符串是顺序的则返回‘UP’,如果是倒叙的则返回‘DOWN’, 如果是乱序的则返回False
def func():
	str1 = input('请输入字符串')
	str1 = list(str1)
	if sorted(str1) == str1:
		return 'UP'
	elif sorted(str1,reverse = True) == str1:
		return 'DOWN'
	else:
		return False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值