函数基础和函数参数

课题:函数

'''学函数的目的:'''

    # 不学函数
        1、复杂度增大
        2、组织结构不够清晰
        3、可读性差
        4、代码冗余
        5、可扩展性差
    # 学函数
		1、使用函数可以提高编写的效率以及代码的重用
        2、函数是带名字的代码块,随用随调
        3、使用函数,程序编写,阅读,测试和修复都将更容易美观

知识点一:函数的定义

函数的作用就是避免重复造轮子

函数的作用 能够被重复调用,有入口也有出口的代码段

1、定义函数

def know_error():  #    函数名:见名知意
    print('1')
    print('2')
    print('3')
    print('4')
    print('5')
know_error()

把独立功能的代码块封装到函数里面去,从而达到一个多次使用的效果
减少代码量,冗余  结构也比较清楚, 保持代码的一致性 

def func():
    pass    # 省略的意思  没写完也不会报错
while True:
    pass



return  返回  结果  
def func()
	return 1    
func()  # 不会被打印    函数的调用之后 执行了就会有一个结果
return  # 后面跟的就是这个结果 会把结果保存给这个函数的调用


def func(a,b):   传值  (形参)
    print('开始了')
    result = a - b
    return result
print('--结束--')  # 遇到return 后面的都不会执行了 代表函数结束了  返回值都出来了呀   问题:函数里可有有多个renturn 吗     (选择执行的时候可有有多个)
a = func(10,5)      传值
print(a)

知识点二:函数的参数

def func(a,b):
    print('开始了')
    result = a - b
    # return result
	print('结果%d'%result)
	print('--结束--')
num1 = int(input('数字:'))
num2 = int(input('数字:'))
func(num1,num2)

# 传到函数里面 进行计算

'''调用一定要写在定义的下面'''
if num1 == 'c':
    break

1、必备参数

# 参数能够接受任意类型的对象
def func(a,b):
    print('开始了')
    result = a - b
    return result
	print('结果%d'%result)
	print('--结束--')
func(180)  # 报错
必备参数  你写了几个 就必须要传几个

2、默认参数

def func(a,b=160):
    print('开始了')
    result = a - b  
    return result
	print('结果%d'%result)
	print('--结束--')
func(180)  # 报错
默认参数  你可以去传 如果传了 就拿你传的参数,入果没传 就按默认的参数去执行

# 问题  (b=160,a) 是否报错?

3、不定长参数

# 问题:传10个必备参数,可以定义10  我要100个呢?

# 不定长参数
def func(*args):        接受多个值  都是以元组接收的
    print(args)     
func(1,2,3,4,5,6,7,8,9)

def func(**kwargs)   # 关键字传参
print(keargs)
func(a=1,b=2,c=3)  键等于值的形式  

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

#  *位置参数  和  **关键字参数
a = 1   变量没有类型的    传什么就是什么     参数也是这样的
*(1,2,3,4)     **{'a':4}

必备 默认 不定长(位置,关键字)

示例:
    def func(a,b,c):
        print('')
    func(1,2,3)  # 位置
    func(a=1,b=2,c=3)  # 关键字
    func(1,b=2,c=3)  ok
    func(1,b=2,3)  # 报错

知识点三:高级内置函数

内置函数--------------------------------------------
已经写好的一些函数   美观,强大
dir(__builtins__)   列表   built ins
72 个   __都是魔法方法

a = [1,2,3,4]
len(a)  长度

min(a)  小
max(a)  大
sorted(a) 排序
reversed(a)
list(reversed(a)) (逆序)
sum(a)  求和

bin(12)   2进制
oct(8)    8进制
hex(11)   16进制
ord('a')  # 97         # ascii
ord('A')  # 65
chr(97)   # 'a'
chr(65)   # 'A'

li = ['a','b','c','d']
enumerate(li)
list(enumerate(li))    枚举    把索引返回出来
dict(enumerate(li))           元素跟索引对应起来
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标
start -- 下标起始位置。
li = ['a','b','c']
# enumerate(li)
a = list(enumerate(li,100))
print(a)

for i ,j  in enumerate(li):
    print(i,j)


a = '1+2+3'
eval(a)  转换成表达式执行
eval('a=1') # 报错
# 将字符串str当成有效的表达式来求值并返回计算结果。
b = 1
'b = 1'

exec()  # 执行以string类型存储的Python代码
i = 3
j = 2
exec('um = i + j')  # 返回值永远是空
print(um)
ans变量并没有显式的定义,但仍然可以在print函数中调用。这是exec语句执行了"um = i + j"中的代码,定义了sum变量。
i = 3
j = 2
exec('print(i + j)')

a = 'for i in range(5):print(i)'
exec(a)


filter()
def func(x):
    return x > 10
li = [2,5,8,10,22,44]
list(filter(func,li))   过滤函数,过滤条件


map()
def func2(num):
    return num * 10

l2 = [1,2,3,4,5]
map(func2,l2) 函数对象 , 可迭代对象
list(map(func2,l2))

zip()
t1 = [1,2,3,4]
t2 = ['a','b','c','d']
list(zip(t1,t2))
posted @ 2023-08-31 21:19  csh逐梦  阅读(17)  评论(0编辑  收藏  举报