进击の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")

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


*基础中的基础*
*灵魂中的灵魂*

~~函数基础(一):函数&参数~~的更多相关文章

  1. 【2017-03-05】函数基础、函数四种结构、ref和out参数、递归

    一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入, ...

  2. Python函数基础和函数参数

    函数的定义和函数的调用 return的作用 三种参数的定义 常用的内置函数 len() 函数基础 函数的定义 def 函数名(参数): pass return 表达式 pass在这里表示什么都没有,不 ...

  3. python函数基础以及函数参数简解

    python中函数分为函数.内置函数Python所有的内置函数 自定义函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. ...

  4. 潭州课堂25班:Ph201805201 第八课:函数基础和函数参数 (课堂笔记)

    1, 函数定义 def fun(): print('测试函数') fun() #调用函数 return 运行函数返回值 def fun(): name = [1,3,4,5] return name[ ...

  5. day10.函数基础及函数参数

    一.函数 功能:包裹一部分代码 实现某一个功能 达成某一个目的 特点: """ 特点:可以反复调用,提高代码的复用性,提高开发效率,便于维护管理 函数基本格式 函数的定义 ...

  6. Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器

    今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...

  7. python函数基础(函数的定义和调用)

    函数的定义 python定义函数使用def关键字 return[表达式]语句用于退出函数,选择性的向调用方返回一个表达式,不带参数值的return语句返回none def 函数名(参数列表): 函数体 ...

  8. python 新手函数基础(函数定义调用值传递等)

    1.编程的集中主要方式: 面向过程 >类 >>关键字class 面向函数>函数 >> 关键字def 面向过程> 过程 >> 关键字def 2.py ...

  9. python基础知识06-函数基础和函数参数

    函数基础和函数参数 可迭代对象:序列类型 range . 1.函数的定义 def 函数名(参数): pass return 表达式 ,不能是赋值语句.不写默认返回None.用逗号隔开返回一个元组. 函 ...

  10. PHP基础入门(三)---PHP函数基础

    PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...

随机推荐

  1. Win8Metro(C#)数字图像处理--2.7图像伪彩色

    原文:Win8Metro(C#)数字图像处理--2.7图像伪彩色  2.7图像伪彩色函数 [函数名称] 图像伪彩色函数PseudoColorProcess(WriteableBitmap src) ...

  2. LINQ查询表达式---------where子句

    LINQ查询表达式---------where子句 where 子句用在查询表达式中,用于指定将在查询表达式中返回数据源中的哪些元素. 它将一个布尔条件(“谓词”)应用于每个源元素(由范围变量引用), ...

  3. [转载]关于Java reference的一篇博文

    不再额外的叨叨了,直接附上原地址: https://community.oracle.com/people/enicholas/blog/2006/05/04/understanding-weak-r ...

  4. UBUNTU 16.04 + CUDA8.0 + CUDNN6.0 + OPENCV3.2 + MKL +CAFFE + tensorflow

    首先说一下自己机子的配置 CPU:Intel(R) Core(TM) i5-5600 CUP @3.20GHz *4 GPU : GTX 1060 OS : 64bit Ubuntu16.04LTS ...

  5. MinGW gcc 生成动态链接库 dll 的一些问题汇总(由浅入深,很详细)

    网络上关于用 MinGW gcc 生成动态链接库的文章很多.介绍的方法也都略有不同.这次我在一个项目上刚好需要用到,所以就花了点时间将网上介绍的各种方法都实验了一遍.另外,还根据自己的理解试验了些网上 ...

  6. Office Add-In 应用类型及平台支持

    原文地址: http://simpeng.net/office-add-in/office-add-in-%e5%ba%94%e7%94%a8%e7%b1%bb%e5%9e%8b%e5%8f%8a%e ...

  7. DataVeryLite和Nhibernate性能对比

    电脑型号:acer 4752g 电脑配置: 代码分享: class Program { static void Main(string[] args) { Debug.Listeners.Add(ne ...

  8. linux dll hell--链接库real name, soname, link name

    DLL hell 是指 Windows 系统上动态库的新版本覆盖旧版本,且新版本不能兼容旧版本的问题. 例如:装新软件,但原有的软件运行不起来了.   Linux 系统下也同样面临着和 Windows ...

  9. 曹工说Tomcat2:自己撸一个简易Tomcat Digester

    一.前言 框架代码其实也没那么难,大家不要看着源码就害怕,现在去看 Tomcat 3.0的代码,保证还是看得懂一半,照着撸一遍基本上很多问题都能搞定了.这次我们就模拟 Tomcat 中的 Digest ...

  10. Azkaban学习之路(一)—— Azkaban 简介

    一.Azkaban 介绍 1.1 背景 一个完整的大数据分析系统,必然由很多任务单元(如数据收集.数据清洗.数据存储.数据分析等)组成,所有的任务单元及其之间的依赖关系组成了复杂的工作流.复杂的工作流 ...