python-函数

函数是什么

函数特性

减少重复代码

使程序变得可扩展

使程序变得易维护


函数参数

 形参实参

一个是实际存在的值(实参),一个是调用才会用到的值(形参)


 默认参数


关键参数

一个参数不能同时接受两个值,关键参数要在位置参数后面


 如果参数中出现 *user,传递的参数就可以不再是固定个数,传过来的所有参数打包给元祖

 报警给多个人发送,且可以一直添加

方式一

 方式二


非固定参数


函数的返回值

 

#定义在函数外部的一级代码的变量,叫全局变量,全局能用

#局部变量就是指定义在函数里的变量,只能局部生效

#在函数内部,可以引用全局变量

#如果全局和局部都有一个变量,叫name,函数查找变量都顺序是由内而外的

要在函数里面改全局变量

global name



#局部变量,在函数里面的变量就叫局部变量

name = "xiaoheb"


def change_name():

global name
name = "黑心的奸商"
age = 25

print("在",name,"的妈里面...",id(name))


change_name()
print(name,id(name))



#定义在函数外部的一级代码的变量,叫全局变量,全局能用

#局部变量就是指定义在函数里的变量,只能局部生效

#在函数内部,可以引用全局变量

#如果全局和局部都有一个变量,叫name,函数查找变量都顺序是由内而外的

引用全局要吧global放在上边 (但不建议用)

#局部变量


names = ['heb','hebwife','xuyang']

def change_name():

del names[2]
print(names)

change_name()
print(names)


#字符串,数组不可以被修改

嵌套函数

age = 19


def func1():

age = 213
print(age)
def func2():
print(age)

func2()

func1()
#3. func1() # 213,213




作用域

python中的函数就是一个作用域


匿名函数


#匿名函数


def clac(x,y):
if x < y :
return x * y
else:
return x/y



func = lambda x,y:x*y if x < y else x/y #lambda 声明一个匿名函数



print(clac(14,2))
print(func(14,2))







data = list(range(10))
print(data)

def f2(n):
return n*n

print(list(map(lambda x:x*x,data)))

#1.节省代码量
#2.看起来更高级






高阶函数

#变量可以指向函数,函数的参数可以接受变量,那么一个函数就可以接受另一个函数作为参数,这种函数就称为高阶函数






 

函数 - 递归


#把10不断除以2直到不能除为止,打印每次结果



# n = 10
#
# while True:
#
# n = int(n/2)
# print(n)
# if n == 0:
# break


# def clac(n):
# n = int(n/2)
# return n

import sys
print(sys.getrecursionlimit())

#递归

def func():
pass

def clac(n):
n = int(n/2)
print(n)
if n > 0:
clac(n)

clac(10)


def calc(n,count):
print(n,count)
if count < 5:
calc(n/2,count+1 )



calc(188,1 )


递归特性

练习题








原文地址:https://www.cnblogs.com/hyperx233/p/8194858.html