• ~~函数基础(一):函数&参数~~


    进击のpython

    *****

    函数基础(一):参数


    说明一点奥,如果你前置文章没有看懂,那么不建议你直接看这个

    因为看了也是浪费时间,没有意义


    好,接下来就是Python的灵魂部分了——函数

    在历史的长河中,遇到复杂问题的时候,人们总是想能不能对这个问题简单化处理

    于是,模块啊,函数啊什么的,包括各种算法就接踵而至了

    那函数原先是怎么想出来的呢?


    在原先啊,人们遇到了一个这样的问题

    # 报警装置,出现问题,发送问题到邮件
    

    很正常的需求是吧

    怎么写的呢(伪代码)

    A = 故障
    if A == "警报故障"
        打开QQ邮箱
        编辑警报故障邮件
        发送邮件
        关闭QQ邮箱
    if A == "排水故障"
        打开QQ邮箱
        编辑排水故障邮件
        发送邮件
        关闭QQ邮箱
    if A == "储水故障"
        打开QQ邮箱
        编辑储水故障邮件
        发送邮件
        关闭QQ邮箱
    ... ...
    

    刚开始人们就这么写的,但是很快,有人就发现了问题

    这段代码存在大量的重复语句

    虽然可以当“CV工程师”,但是人类还是要进步的

    所以人们就在想

    把这些重复,多次使用的代码语句放在“盒子”里,用的时候直接把盒子拿出来

    于是,函数就出现了!

    这段代码就可以变成这样(先别问为什么,看效果!):

    def send_mail(x):
        打开QQ邮箱
        编辑x邮件
        发送邮件
        关闭QQ邮箱
        
    A = 故障
    send_mail(A)
    

    是不是简单太多了!

    现实情况讲完了,那就开始函数的学习之旅吧!


    • 语法

      语法是个很重要的环节,需要注意以下几点:

      def 后面要有空格

      函数命名遵循变量命名规则

      函数名后面有括号()

      括号后面有冒号:

      def send_mail(): # 定义一个名为 send_mail 的函数
      

      接着首行缩进,写你的代码,和正常写代码一样

      def send_mail():
          print("这是一个函数")
      

      好了,函数部分的代码写完了

      你现在执行是执行不了的,为什么?因为你还没调用

      怎么调用?问的好!

      其实我们在前面写的这个

      print()
      

      这就是Python自带的一个名为print的函数

      那我们自定义名为send_mail的函数要怎么调用呢?

      send_mail()
      

      能理解是吧(不能理解就再看一遍!!!)


    • 参数

      其实你应该刚才有个疑问

      我刚才介绍函数定义的时候,()里面是空的,但是我的例子里面是(x)

      那这个 x 是什么呢?

      这就触及到你的知识盲区了

      接下来要讲两个概念

      实参 形参


      实参:

      你看人起的名字,实参

      什么是实参?实实在在的参数,或者说

      真实的参数

      举个例子:

      print("App")
      

      这个App就是我要处理的数据,因为我要打印这个对吧

      那他就是参数

      我知道这个参数的内容吧 App 嘛,是不

      所以 这个 App 就是真实的参数,就是实参!

      听懂掌声!

      那听你这意思,还有不真实的参数呗?


      形参:

      形式参数,就是不真实的参数

      好了,例子说话

      def send_mail(x):
      

      来吧,我是不是要通过函数来处理这个x?

      那这个x是不是参数?

      那你告诉我,x是什么?

      1?2?猫?狗?

      不知道吧!

      那就是形参!


    • 默认参数

      你以为参数就两种??想多了奥铁汁!

      要真这么简单,怎么能称之为灵魂呢?

      什么叫默认?就是你不改他就输出默认的东西

      比如你某些App选择城市的时候,是不是默认的就是北京?

      那这个默认的就是默认参数

      来个例子

      def city(x="北京"):
          print(x)
      
      
      city()
      city("上海")
      

    为什么是这样的呢?

    当你没有给这个city函数变量的时候,city函数就使用默认的“北京”这个参数传递给x;而当你给它一个“上海”这个参数的时候,就用你的参数传递给x

    懂了吗?凑弟弟!

    感觉应该叫关键字参数!

    更像是字典的 key-value 模式

    def func(x, y, z):
        print("x:", x)
        print("y:", y)
        print("z:", z)
    
    
    func(y=1, z=2, x=3)
    

    简单不?懂了没?是不是挺像 key-value 的字典模式的!


    • 位置参数

      位置参数!就是一个萝卜一个坑!

      def func(x, y, z):
          print("x:", x)
          print("y:", y)
          print("z:", z)
      
      
      func(1, 2, 3)
          
      

    按顺序一个一个来,这没啥讲的。


    • 非固定参数

      最后一种了奥,啥叫非固定参数呢?

      我们还是看这个函数:

      def func(x, y, z):
          print("x:", x)
          print("y:", y)
          print("z:", z)
      

      那我想用这个函数,但是我想传四个参数怎么办?直接写?

      func(1,2,3,4)
      

    一定会报错!因为你 4 这个参数都没有变量接着,一定会报错啊!

    于是乎,聪明的“懒人”们就搞出了这个东西

    *args

    别问,用就完了!

    args就是把你多出来的位置参数,以元组的方式储存起来的一个容器
    *args就是把你多出来的位置参数,打散打印出来!

    def func(x, y, z,*args):
        print("x:", x)
        print("y:", y)
        print("z:", z)
        print("其他",*args)
        print("其他",args)
    
    
    func(1,2,3,4,5)
    
    x: 1
    y: 2
    z: 3
    其他 4 5
    其他 (4, 5)
    

    ok不?了解了不?

    那就再来个刺激的!

    **kwargs

    什么鬼?????这是啥??????

    这是关键参数溢出的存储容器

    def func(x, y, z, *args, **kwargs):
        print("x:", x)
        print("y:", y)
        print("z:", z)
        print("其他", *args)
        print("**kwargs:", kwargs)
    
    
    func(1, 2, 3, 4, 5, key="hello")
    

    它是以字典的形式存储的,哈哈哈哈哈哈哈哈哈!!!!!!!!!


    *基础中的基础*
    *灵魂中的灵魂*
  • 相关阅读:
    Java四种内部类
    Java多态详解
    为啥java要使用 set ()和get()方法---封装
    Python---django轻量级框架
    java 读取数据库数据转化输出XML输出在jsp页面
    操作系统专栏
    learn more ,study less(三):超越整体性学习
    learn more ,study less(二):整体性学习技术(下)
    learn more ,study less(二):整体性学习技术(上)
    Spring博客专栏
  • 原文地址:https://www.cnblogs.com/jevious/p/11142185.html
Copyright © 2020-2023  润新知