python入门超easy系列(四)——— 看似麻烦的函数其实就那么简单

学会函数,从此告别3000行重复代码

众所周知,python是世界上入门最简单的语言!?——周某人


前言

假设面试官给你出个题目:计算出三组,每组两个数字的完全平方和,再进行相加(面试官:我才不会出这么简单的题目,哼?)你是老老实实的将同一段代码敲三遍还是用一种更加巧妙的方法在面试官面前秀他一脸呢?(当然是秀他一脸了?),所以为了能在面试的时候秀面试官一脸,我们必须学会一种很酷炫的写法——函数!


初识函数

  • 函数定义:具有特定功能的一段代码。
  • 优点:可以减少代码的重复书写,可以将功能的实现者和使用者分开,提高开发效率。
  • 分类
    • 库函数:print、input、type等
    • 自定义函数:用户自己封装的函数

函数使用:

  • 基本格式:

    def 函数名([参数列表]):
    	函数体
    
  • 函数名:就像变量名一样,只要符合标识符命名规范即可。

  • 函数调用格式:函数名([参数])

  • 说明:函数不调用是不执行的,只有调用后才会执行。


函数分类

  • 按照有无参数以及返回值对函数进行分类

  • 无参数无返回值:

    # 无参无返回值
    def print_ten_hello():
        for i in range(10):
            print('hello world!')
    
    # 无参:调用时无需传参数
    # 无返回值:执行完函数的返回值为None
    # None的一个作用是为了不报错,仅仅只是这样
    ret=print_ten_hello()
    print(print_ten_hello())
    
  • 有参数无返回值:

    # 带参无返回值
    def print_n_hello(n):
        for i in range(n):
            print('hello world!')
    # 需要传递参数
    print_n_hello(3)
    
  • 有参数有返回值:

    # 带参有返回值
    def add(a, b):
        ret = a+b
        # 使用关键字return返回内容
        # 一旦执行return,函数立即结束
        # return后面会返回函数返回值
        return ret
    print(add(3,5))
    

函数参数

  • 形参:形式参数,就是写在函数定义处的参数。

  • 实参:实际参数,就是在函数调用时传递的参数。

  • 位置参数:函数定义时没有默认值的参数,也叫必传参数。调用时实参与定义时的形参要一一对应

  • 默认参数:函数定义时有默认值的参数,调用函数时可以不传递该参数。默认参数需要放在末尾

  • 关键字参数:函数调用时指定参数的名字,参数的位置就无需考虑。

  • 可变长度参数:

    def var_len_args(a, b, *args, name='二狗', **kwargs):
        print(a, b)
        # 是一个元组,用于保存多传的位置参数
        print(args)
        # 是一个字典,用于保存多传的关键字参数
    
  • '*'的使用:

    def show(a, b=8):
        print(a, b)
        
    lt = [2, 3]
    # show(lt[0], lt[1])
    # 与上式等价,*是将列表展开,然后作为位置参数传递给函数
    show(*lt)
    
    d = {'a': '大花', 'b': 18}
    # show(a=d['a'], b=d['b'])
    # 与上式等价,**式将字典展开,然后作为关键字参数传递给函数
    show(**d)
    

函数解惑

  • 函数定义的位置是随意的吗?
    • 不是,函数调用一定要放在定义之后,也就是先定义再调用。
  • 函数的名字是否可以相同?
    • 不可以,虽然语法不报错,但是后者会覆盖前面的同名函数。
  • 函数内部能否定义另一个函数?
    • 能,函数内部定义的函数叫内部函数,它是很多高级功能实现的基础。

常用函数(系统函数)

print:打印,输出
input:输入
type:获取类型
len:统计元素个数
range:产生连续的整数对象
enumerate:枚举可迭代对象
ord:字符转ASCII
chr:ASCII转字符
abs:求绝对值

类型转换:intfloatstrboolsetlisttupledict

max:最大值
min:最小值
sum:求和
pow:求幂
round:四舍五入

hex:十六进制
oct:八进制
bin:二进制

模块函数(需要导入)

1.时间函数

import time

while True:
    print('Hello world!')
    time.sleep(1)

2.数学函数

import math

print(math.e)
print(math.pi)
print(math.ceil(3.1))
print(math.floor(3.9))
print(math.sqrt(4))
# 度转换为弧度
print(math.radians(360))
# 弧度转换为度
print(math.degrees(math.pi))

3.sys函数

import sys

# 是一个列表,保存所有的命令行参数
print(sys.argv)

变量作用域

  • 块级作用域

    if True:
        name = 'xiaoming'
    
    # 没有块级作用域
    print(name)
    
  • 局部作用域

    def test():
        a = 10
    
    test()
    # 局部变量:在函数内部定义的变量,只能在函数内部使用
    # print(a)
    
  • 全局作用域

    # 全局变量:定义在函数外部的变量,拥有全局的作用
    num = 10
    
    def show():
        # 函数内部可以使用外部定义的变量
        # print(num)
        # 若想更改外部变量,需要进行global声明
        global num
        # 不能更改外部的全局变量,而是定义了一个局部变量
        num = 20
        
    show()
    print(num)    
    
  • nonlocal使用

    def wai():
        n = 100
        def nei():
            # 使用外部函数的局部变量,需要进行声明才可更改
            nonlocal n
            # 内部函数可以使用外部函数的局部变量,但是不能更改
            n = 200
            print(n)
        nei()
        print(n)
    wai() 
    

匿名函数

在讲述匿名函数之前先了解函数拥有的两个属性

  • 函数可以像普通变量一样进行赋值

    def test():
        print('for test')
        
    print(test.__name__)    
    
    # 函数可以像普通变量一样进行赋值
    a = test
    print(a.__name__)
    a()
    
  • 函数可以作为一个函数的参数

    def show(func):
        func()
    
    # 函数作为参数传递
    show(test)
    
  • 匿名函数:

    • 说明:当将函数作为参数传递时,若函数只需要一次,没有必要单独定义函数,可以使用匿名函数解决。
    • 格式:lambda 参数列表: 表达式
      • 参数列表与定义函数一样,可以是多个,多个参数之间使用逗号分隔
      • 表达式就是返回值,不需要使用return关键字
      • 示例:
      lt = [
          {'name': 'dahua', 'age': 18, 'height': 165},
          {'name': 'erhua', 'age': 16, 'height': 160},
          {'name': 'dagou', 'age': 20, 'height': 175},
          {'name': 'ergou', 'age': 15, 'height': 155}
      ]
      
      def key(d):
          return d['height']
      
      # lt.sort(key=key)
      lt.sort(key=lambda d: d['age'])
      
      for i in lt:
      	print(i)  
      

下期预告:下一期将要讲解闭包的使用、装饰器及其类型以及简单递归函数的coding 规则。
Tips:如有疑问欢迎随时打扰 ???

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于vue健身小程序正是采用微信小程序和网络设计的新型系统,可以有效的把健身信息与网络相结合,为用户提供工作帮助和管理需求。本系统采用mysql数据库存储数据,兼容性更强,可跨越多种平台,采用的框架为ssm。主要设计的内容包括课程信息、教练信息、健身视频。教练可以上传健身视频,学员可以购买课程和预约教练以及在线充值、发帖。为了可以给用户更多的提醒,本系统中加入了当前登录角色的提示内容。管理员在系统中可以更新各种数据信息。本系统是信息化社会发展的必然产物,可以为用户提供更为高效的管理以及辅助,同时也可以改变健身房管理的局面,提高效率。 登录功能为管理员、教练和学员登录,在登录界面设计中包括用户名和密码、权限的检验。用户名和密码、权限的检验过程由数据库自动完成,此过程需要1秒左右。首先由用户填写账号和密码,选择权限,然后点击登录系统,数据库自行对用户名和密码进行对比,所填写数据正确方能进行登录,所填写数据错误则需要返回登录界面重新登录。首页界面是最直接的展示,用户可以对系统进行最直接的了解。在本功能界面里可以看到背景图片、功能导航栏,视频信息、课程信息、教练信息等。学员信息是健身房的重要组成部分,管理员可以添加学员信息,查询学员信息.。教练信息管理功能分为管理员管理教练信息和登记、查询教练信息,管理员可以看到教练的各项基本信息,可以删除教练的基本信息。系统里展示的健身视频都可以由管理员进行审核和添加管理,教练也可以发布视频。管理员可以输入视频名称和上传视频来实现健身视频的添加。管理员和教练可以上传培训课程,学员可以浏览课程信息。管理员和教练都可以管理预约信息,学员在看到教练后可以进行预约。管理员可以审核帖子信息。管理员、教练和学员都可以管理订单信息。学员在课程详情里可以购买课程。学员在教练详情里可以评价、收藏以及预约。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值