专栏首页算法与编程之美python|对Python中函数的学习

python|对Python中函数的学习

问题描述

在python中,定义一个函数需要使用def语句,依次写出函数名,括号,括号中的参数和冒号:,接着在缩进后编写函数,函数的返回值用return语句返回。定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

解决方案

以math.sqrt()函数为例

定义一个函数,quadratic(a,b,c),接收三个参数,返回一元二次方程ax²+bx+c=0的两个解。

import math

def quadratic(a,b,c):

   if a == 0:

     raise TypeError('a不能为0')

   if not isinstance(a,(int,float)) or not isinstance(b,(int,float)) or  not isinstance(c,(int,float)):

     raise TypeError( 'Bad operand type')

   delta = math.pow(b,2) - 4*a*c

   if delta < 0:

     return '无实根'

   x1= (math.sqrt(delta)-b)/(2*a)

   x2= (math.sqrt(delta)+b)/(2*a)

   return  x1,x2

print(quadratic(1,3,1))

print(quadratic(2,3,-4))

上面的函数会输出以下结果

结语

(1)定义函数的时候先对参数的数据类型检查一遍,确定函数名和参数的数量。

(2)函数执行完毕也没有return随时返回函数结果,函数运行完后没有return语句时,自动return None。

(3)在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值。

实习主编 | 王文星

责 编 | 王楠岚

where2go 团队

本文分享自微信公众号 - 算法与编程之美(algo_coding),作者:王楠岚

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JS|函数的返回值

    这个看似能输出结果,实则是在逻辑上是不合理的,我们函数是做某件事或者实现某种功能,而在上面的代码中,函数提供了‘aru’,结果自己却把该参数给输出了。这好比是鸡...

    算法与编程之美
  • 聊一聊编程中的函数

    给定一个数集A,假设其中的元素为x。现对A中的元素x施加对应法则f,记作f(x),得到另一数集B。假设B中的元素为y。则y与x之间的等量关系可以用y=f(x)表...

    算法与编程之美
  • HTML|对简单表格网页的学习

    我们经常看到关于表格的网页,例如一些报名表,统计表之类的,里面有很多的信息,图片,以及一些超链接。如何做一个美观好看五彩的表格网页,以及在表格中插上图片及超链接...

    算法与编程之美
  • 软件测试之学习shell编程函数的使用

    吾爱乐享
  • JS|函数的返回值

    这个看似能输出结果,实则是在逻辑上是不合理的,我们函数是做某件事或者实现某种功能,而在上面的代码中,函数提供了‘aru’,结果自己却把该参数给输出了。这好比是鸡...

    算法与编程之美
  • python3 使用argparse更

    通常情况下,我们都会使用sys.argv[n]这样的手段来获取python脚本的输入参数。这样做的缺点如下: 1 参数输入和获取必须严格按照顺序 2 在获取参数...

    py3study
  • 千万级MySQL数据库建立索引,提高性能的秘诀

    实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化和硬件的优化四个方面,如下图所示:

    李红
  • 关于安卓下拉刷新时的悬浮菜单栏

    最近在github上遇到一个下拉刷新上拉加载的项目--BGARefreshLayout。地址。使用里面的BGARefreshLayout嵌套一个

    用户4458175
  • Fixed: MacOS Mojave(10.14) 解决终端用Crontab报权限问题(不管是Root还是普通用户)及Linux基础(shell)

    不管是用Root还是自身用户..都会报Operation not permitted(任务没法写入);

    CRPER
  • leetcode: 80. Remove Duplicates from Sorted Array II

    leetcode: 26. Remove Duplicates from Sorted Array

    Petrichor_

扫码关注云+社区

领取腾讯云代金券