python函数

1.函数的声明

# 一些准备好的代码,在需要的时候可以调用
# 在python中,使用def关键字来声明函数
# 语法:
# def 函数名(参数):
#     具体内容

2.函数的调用

# 函数的调用
def aa():
    print("这是一个函数哦")
    print("里面有很多数据呢")

n = int(input("请输入年龄"))

if 0 <= n <= 5:
    for w in range(3):
        aa()
elif 5 < n <= 10:
    for e in range(2):
        aa()
else:
    aa()

# 函数的参数

def bb(name, age):
    print("学生叫:", name)
    print("年龄:", age)

# 默认
bb("zhao", 12)

# 规定接收字段
bb(age=23, name="liu")

3.带参数和返回值的函数

# 带参带返回值的函数
def cc(num1, num2):
    c = num1 + num2
    return c

print(cc(1, 3))

4.函数说明

# 函数的说明
def add(a, b):
    """
    这是一个函数说明:计算二个数字之和的函数
    :param a: 第一个数值
    :param b: 第二个数值
    :return: 返回结果
    """
    return a+b

5.全局变量和局部变量

# 全局变量和局部变量
# 全局变量可以在整个py文件中访问
a = 100
word = "he"

def test():
    # 在函数内部定义的变量,它是局部变量,只能在函数中使用
    x = "hello"
    print('x = {}'.format(x)) # hello
    # 如果局部变量和全局变量同名,会在函数内部定义一个新的局部变量
    # 而不是修改全局变量
    a = 10
    print('函数a = {}'.format(a)) # 10
    # 函数内部如果想要修改全局变量 需要使用global对变量进行声明
    # 可以通过函数修改全局变量的值
    global word
    word = "aaa"
test()

print("函数外部a = {}".format(a)) # 100
print("函数外部word = {}".format(word)) # aaa

# 内置函数 golbals() locals() 可以查看全局变量和局部变量

6.一个函数返回多个返回值

# 函数多个返回值
def jie(c, b):
    x = c // b
    y = c % b

    # 一般情况下,一个函数最多只会执行一个return语句
    # 特殊情况(finally语句)下,一个函数可能会执行多个return语句
    # return x  # return语句表示一个函数的结束
    return x, y
    # 返回的还可以是一下几种形式
    # return {'x': x, 'y': y}
    # return [x, y]
    # return (x, y)
s = jie(13, 5)
print("商是:{},余数:{}".format(s[0], s[1]))

7.函数总结

# 函数的声明:使用关键字def来声明一个函数
# 函数的格式:def 函数名(形参1, 形参2...)
# 函数的调用:函数名(实参1, 实参2...)
# 函数的返回值:使用return语句返回函数的执行结果
# 函数返回多个结果,就是将多个数据打包成一个整体返回
# 可以使用字典和列表,通常情况下选择使用元组

# 函数名也是一个标识符
# 由数字、字母、下划线组成,但不能以数字开头
# 严格区分大小学
# 不能使用关键字
# 遵守命名规范,使用下划线连接

8.函数的缺省参数

# 缺省参数
# 有些函数的参数是,如果你传递了参数,就使用传递的参数
# 如果没有传递参数,就使用默认的值

# 缺省参数要放到最后面
def say_hello(name, age, city="襄阳"):  # 形参city设置了一个默认值
    print("大家好,我是{},我今年{}岁了,我来自{}".format(name, age, city))

# 如果没有传递参数,会使用默认值
say_hello("张三", 19)
# 可以直接传递单个参数,也可以使用变量赋值的形式传递参数
say_hello(name="王二", age=23, city="北京")
say_hello("李四", 20, "河南")
# 如果既有位置参数又有关键字参数,关键字参数一定要放在位置参数的后面
say_hello("aa", age=12)

9.函数的注意事项

# 函数的注意事项
# 函数的三个要素:函数名、参数和返回值
# 在python里不允许函数重名
# 如果函数重名了,后一个函数会覆盖前一个函数

def test(a, b):
    print("hello, a={},b={}".format(a, b))

def test(x):
    print("good,x={}".format(x))

test(2)

10.递归函数

# 递归简单来说,就是函数内部调用自己
# 递归最重要的就是找到出口(即停止条件)

11.匿名函数

# 除了使用def声明一个函数外,还可以使用lambda表达式定义一个函数
# 匿名函数,用来表达一个简单的函数,调用的次数很少,基本上只使用一次

# 调用匿名函数的二种方式
# 1.给匿名函数起个名字(用的很少)
# 2。把这个函数当成参数传递给另一个函数使用(用到的较多)
lambda a, b: a + b


# 回调函数
def add(a, b):
    return a+b

def de(ae, bs):
    return ae-bs

def sx(a, b,fn):
    c = fn(a, b)
    return c

d = sx(4, 6, add)
print(d)
d2 = sx(8, 5, de)
print(d2)

# 匿名函数
d3 = sx(3, 4, lambda a, b: a+b)
d4 = sx(6, 4, lambda a, b: a-b)
d5 = sx(3, 4, lambda a, b: a*b)
d6 = sx(12, 4, lambda a, b: a/b)

print(d3, d4, d5, d6)

12.字典sort()方法的使用

# 列表的sort方法会直接对列表进行排序
# sorted内置函数,不会改变原有的数据,而是生成一个新的有序列表
ints = (3, 6, 2, 0, 8, 4)

students = [
    {"name": "zhao1", "age": 12, "sc": 123},
    {"name": "zhao2", "age": 17, "sc": 124},
    {"name": "zhao3", "age": 14, "sc": 126},
    {"name": "zhao4", "age": 15, "sc": 125},
]

# 字典和字典之间不能使用比较运算符
def foo(e):
    # 通过返回值告诉short方法通过哪个返回值进行排序
    return e["age"]

students.sort(key=foo)
print(students)

13.filter内置类

# filter 对可迭代对象进行过滤,得到的是一个filter对象
# python2的时候是一个内置函数,python3修改成了一个内置类

age = [1, 9, 3, 7, 4, 6]
# filter 可以给二个参数,一个是函数,另一个是可迭代对象
# filter 结果是一个filter对象,filter对象也是一个可迭代对象
x = filter(lambda ele: ele > 4, age)
for a in x:
    print(a)

14.高阶函数

# 高阶函数
# 1.一个函数作为另一个函数的参数
# 2.一个函数作为另一个函数的返回值
# 3.函数内部在定义一个函数

15.计算一段代码的执行时间

# time模块可以获取当前的时间
import time
# 代码运行之前,获取一下时间
# 时间戳是从1970-01-01 00:00:00 UTC 到现在的秒数
start = time.time()
print("start = ", start)

x = 0
for i in range(1,10000000):
    x += i

print(x)
# 代码运行完以后,在获取一下时间
end = time.time()

print("代码运行耗时{}秒".format(end - start))

16.装饰器

# 装饰器
import time

def cal_time(fn):
    def inner():
        start = time.time()
        fn()
        end = time.time()
        print("代码耗时", end - start)
    return inner

@cal_time
def demo():
    x = 0
    for i in range(1, 10000000):
        x += i
    print(x)

demo()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值