函数的定义

Python的函数定义使用关键字def,如定义一个返回绝对值的函数my_abs

def my_abs(x):
    if x>=0:
        return x
    else:
        return -x

函数调用

参数错误

如果在调用函数时,传给函数的参数增多或减少,python解释器都会检查出来

TypeError:提示my_abs()只需一个参数,但是调用时给了两个

虽然python解释器能检查到参数个数的变化,但当给函数一个非法类型的参数时,就无法准确检测到

解释器虽然给出了错误,但是没有定义具体是哪种错误

参数类型检查

python提供了内置函数isinstance()来判断参数的数据类型

def my_abs(x):
    if not isinstance(x, (int, float)):
        raise TypeError('wrong type......')
    if x >= 0:
        return x
    else:
        return -x

改写了my_abs函数后,如果传参不是int或float类型,则会报错并给出错误信息'wrong type'

函数的参数

python的函数定义虽然相对简单,但是参数种类非常灵活。如正常的必须参数,还有默认参数、可变参数以及关键字参数

位置参数

即必须参数,在传参时按照函数定义的顺序赋给函数

def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

定义一个函数power()来求x的n次方,在调用时根据函数定义的顺序传参。不同的位置顺序得到不同的结果

默认参数

同其他编程语言一样,python在定义函数时可通过设置默认参数来避免因某些参数没有传入而导致的错误

如power(x, n),如果没有传入参数n则会引起错误

解释器提示power()缺少一个必须的参数n。来使用默认参数来改进一下power函数

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

两种形式的函数调用都能正常运行,这正是因为默认函数的作用。当参数都给全时,函数按照给定的参数进行运算;当参数n未传入时,函数按照设置的默认参数进行运算

可变参数

可变参数即参数的个数是可变的,在定义函数时,无需一个一个的给定

def add(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n
    return sum

定义一个add函数用来计算参数的和

通过可变参数,我们可以传入任意个参数来调用函数进行运算

关键字参数

不同于可变参数,关键字参数允许传入0或任意个含参数名的参数,这些关键字参数在函数内部自动组合成dict

def student(name, age, **args):
    print('name: ', name, 'age: ', age, 'other: ', args)

**args:代表传入的是关键字参数

命名关键字参数

上述student函数可以接收除name,age外的任意参数,但是如果需要限制接收的参数就要用到命名关键字参数

假设对于student信息还只需要一个city信息,可以改写student函数如下

def student(name, age, *, city):
    print(name, age, city)

运行结果如下

命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错

函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了,如

def student(name, age, *args, city):
    print(name, age, args, city)

  

 

  

Python函数之简单总结的更多相关文章

  1. 『无为则无心』Python函数 — 28、Python函数的简单应用

    目录 1.函数嵌套调用 2.Python函数的简单应用 (1)打印线条 (2)函数计算 (3)打印图形 3.函数的说明文档 (1)函数的说明文档的作用 (2)函数说明文档的语法 (3)查看函数的说明文 ...

  2. python内置函数的简单使用和介绍

    """内置函数的简单使用和介绍参考链接:https://docs.python.org/3/library/functions.html ""&quo ...

  3. 【python笔记】Qt+云函数 实现简单的登录框制作

    [python笔记]Qt+云函数 实现简单的登录框制作 备注:前置条件:QtDesigner.pycharm.PyQt5.配置好的云函数(百度的叫函数计算CFC,用来充当一个简陋的服务器,主要是免费) ...

  4. python 函数之day3

    一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...

  5. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  6. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  7. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  8. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

  9. python函数传参是传值还是传引用?

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

随机推荐

  1. xmlplus 组件设计系列之二 - 按钮

    除了图标以外,按钮也许是最简单的组件了,现在来看看如何定义按钮组件. 使用原生按钮组件 在 xmlplus 中,HTML 元素也以组件的方式存在.所以,你可以直接通过使用 button 标签或者 in ...

  2. Memcached安装使用教程及常见问题

    一.Windows下安装memcahed 1.下载memcache的windows稳定版,解压放某个盘下面,比如在c:/memcached2.在终端(也即cmd命令界面)下输入"c:/mem ...

  3. ASP.NET Web基本原理

    ASP.NET Web基本原理 浏览器与服务器之间的交互 浏览器向服务器发送HTTP请求,具体如下: 1.浏览器向服务器发送TCP包,要求服务器打开连接 TCP包首部32位,占20字节,格式如图一: ...

  4. 【算法系列学习】线段树vs树状数组 单点修改,区间查询 [kuangbin带你飞]专题七 线段树 A - 敌兵布阵

    https://vjudge.net/contest/66989#problem/A 单点修改,区间查询 方法一:线段树 http://www.cnblogs.com/kuangbin/archive ...

  5. ASP.NET Core:部署项目到Ubuntu Server

    概述 基于上一篇成功安装Ubuntu Server 16.10的基础上,接下来继续我们ASP.NET Core项目的部署之旅! 只是对于这些年整天和Windows打交道的我,初次使用Linux确实有点 ...

  6. 微信小程序之获取当前位置经纬度以及地图显示

    最近刚开始接触微信小程序,在弄懂其结构以及相关接口之后,准备着手实现一个小程序,功能包括--获取用户当前位置的经纬度,在地图上查看位置,通过地图获取不同位置的经纬度. 微信小程序的主体部分包括: 新增 ...

  7. 产品经理学Python:for循环、while循环

    Python中有两种循环,分别为:for循环和while循环. 1. for循环 for循环可以用来遍历某一对象(遍历:通俗点说,就是把这个循环中的第一个元素到最后一个元素依次访问一次).for循环的 ...

  8. node.js 中回调函数callback(转载),说的很清楚,看一遍就理解了

    最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: 复制代码 代码如下: app.use(fu ...

  9. 根据优先关系矩阵使用逐次加一发构造优先函数(Java)

    若已知运算符之间的优先关系,可按如下步骤构造优先函数: 1.对每个运算符a(包括#在内)令f(a)=g(a)=1 2.如果a⋗b且f(a)<=g(b)令f(a)=g(b)+1 3.如果a⋖b且f ...

  10. Docker - 手动迁移镜像

    在没有Docker Registry时,可以通过docker save和docker load命令完成镜像迁移的过程,先将镜像保存为压缩包,然后在其他位置再加载压缩包. 将镜像保存为压缩包文件 [ro ...