不想做一个待宰的羔羊!!!!要自己变得强大。。。。

函数的定义和使用放在最前边还是有原因的,现在语言趋于通用,基本类型基本都是那些,重点还是学习对象的使用方法,而最根本的还是方法的使用,因此优先介绍,方法的目的还是重用和封装

一、方法的定义

方法的定义使用关键词def来定义,定义格式如下:

def方法名(参数定义):

方法体

方法名:方法名的规范同变量名规范一样

参数定义:比较复杂,后面会进行讲解

冒号:这个类似于Java的{},必不可少

方法体:方法实现的功能在此定义即可

简单的例子:

#定义sayHello

defsayHello():print('hello yiwangzhibujian')#调用方法

sayHello()

基本用法还是很简单的,深入起来也不难。

二、方法的返回值

返回值的关键字使用return,一般来说,所有的方法都是有返回值的,如果方法没有使用return,那么Python会在代码结束的时候自动添加:return None

返回值的用法和Java语言一样,用来返回结果或者提前结束方法,但是也有一些不一样的地方

2.1 返回多个结果

这是一个比较特殊的功能,可以返回多个值,实际上返回的是一个tuple,返回值的使用方法和tuple的使用方法是一样的,简单例子如下:

defreturnMulti():return 1,2,3result=returnMulti()print(result)print(isinstance(result, tuple))========控制台输出========(1, 2, 3)

True

所以定义函数的时候写好注释,让使用者明确知道返回值的类型。

2.2 返回函数

除了能够返回数值以后,还能返回一个函数,因为函数也是一个变量。感觉和js一模一样。

三、方法的参数

方法参数的情况就比较多了,除了基本用法以外,其他的也需要好好掌握。

3.1 方法的重载

因为参数没有了类型,所以Python的函数的重载不能靠参数类型了,而只能靠参数的个数,这一点还是比较头疼的,类型需要在方法体内进行判断。

3.2 参数默认值

当需要传入多个参数的时候,如果有的参数的值使用频率非常高,可以把这个值设置为默认值,这样方便使用。

比如说字符串转换数字的全局函数:int()

一个参数的定义:int(x=0)

两个参数的定义:int(x, base=10)

当只有一个参数的时候,即便不输入,也有一个默认值为0:

print(int())print(int(0))print(int('0'))

因此上面三个输出均为0。

当然一般的字符串转数字都是十进制,所以把10当做默认的进制,当然如果需要转换二进制,也是可以设置参数的,这就需要主动设置了:

print(int('10'))print(int('10',base=10))print(int('10',base=2))=========控制台输出=========

10

10

2

这就是默认值的基本用法,但有一点要注意的,默认参数默认值必须放在普通参数后面。

3.3 可变参数

可变参数和Java的可变参数是一样的,用来代表同一处理方式的数量不确定的参数,只是表现形式不一样,下面示例方法打印实际传入方法的参数,具体实现可以根据实际情况来:

def see(*nums):print(nums)print(isinstance(nums, tuple))

see(1,2,3)=========控制台输出=========(1, 2, 3)

True

由此可知,可变参数实际上是以tuple的形式传入方法内部的。使用可变参数也要注意以下事项:

一个方法只能有一个可变参数

可变参数必须放在默认参数的后面

3.4 关键字参数

可变参数还是有它的缺点的,就是只能是同一种元素的多个值,用在不需要区分每个值类型的情况下才能使用,但是当需要区分的时候则需要使用关键字参数,可以连同这个参数的名称一起传进来:

def see(**keyvalue):print(keyvalue)print(isinstance(keyvalue, dict))

see(a=1,b=2,c=3)=======控制台输出======={'a': 1, 'b': 2, 'c': 3}

True

可以发现,实际上Python把关键字参数封装成一个dict并传入到方法内,这样拿到它后就可以进行使用,至于用法等你有这个需求的时候就可以使用了。

关键字参数的输入也是可以加以限制的,使用*分割,后面的即是限定的输入名称:

def info(name,age,*,country,city):print(name,age,country,city)

info('yiwangzhibujian',27,country='Chine',city='BeiJing')=========控制台输出===========yiwangzhibujian27 Chine BeiJing

当然如果关键字参数指定需要的参数值,但是却没有输入的时候,还是会报错的,因此也是可以给关键字参数加上默认值的:

def info(name,age,*,country=’China',city):

print(name,age,country,city)

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

def person(name, age, *favoNum, country, city):print(name, age, favoNum, country, city)

掌握以上基本用法就可以了。

3.5 各种类型参数的混用

参数类型多了,怎么使用就很头痛,顺序错了还不行。顺序如下:普通参数、默认参数、可变参数、关键字参数。

四、函数的其他应用

4.1 空函数

当我们定义了一个参数时,如果还没有想好怎么实现,空着的话是会报错的,这时候可以使用pass来表示空着的函数:

defme():pass

这样的话运行就不会报错了,等以后想好实现再来补充。

4.2 参数类型检查

因为Python不是强类型语言,所以参数的类型是不能确定的,可是当我们在参数类型不确定的情况下去假定它的类型并使用它,就会发生异常,因此对传入参数进行类型检查就是有必要的,当传入错误的参数可以进行有效的提醒,参数类型检查使用前面讲过的全局函数isinstance()即可,函数具体使用方法详见:Java程序员学习Python(四)— 内置方法和内置变量中isinstance()的介绍。

4.3 传入函数

既然前面说过函数也是一个对象,那么Python也是允许传入一个方法的。例如定义一个判断方法:

def judge(fun,*num):returnfun(num)print(judge(max,1,2,3))print(judge(min,1,2,3))==========控制台输出===========

3

1

这样就根据传入的方法来获取指定的数字,当然参数类型检查还是有必要的,不然对一个不是函数的参数调用方法肯定是会报错的。

4.4 文档中方法的描述形式

学习Python的过程中还是要经常看文档的,关于文档中对函数的描述简单介绍下,首先你要掌握上面的几种参数类型,这是基本的要求。还有就是对中括号的理解:

例如:str.endswith(suffix[, start[, end]]),中括号代表参数可选择输入,不是必填项,当然可选择也代表着有默认值,注意查看函数的定义,也就是说,这个函数可以如此输入:

str.endswith(suffix)

str.endswith(suffix, start)

str.endswith(suffix, start, end)

这个了解即可,实际定义函数的时候不能这么定义。

4.5 对函数的深层理解

函数也是一个对象和js类似,方法名只是指向函数对象的一个引用,这种特性会有以下效果:

print(abs(-1))

abs2=absprint(abs2(-1))

这个只是基本理解,后续学习后的理解会再来补充。。

java min 函数的使用方法_【Python】Java程序员学习Python(五)— 函数的定义和使用...相关推荐

  1. 有python基础学习java简单吗_【Python】Java程序员学习Python(三)— 基础入门

    一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...

  2. java碰到乱码如何解决方法_如何处理java的乱码

    为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的! 如果中国的程序员不会遇到乱码,那么只有使用汉语编程.汉语编程是怎么回事, ...

  3. python发邮件怎么用服务器每天发_神级程序员的Python爬虫!服务器定时发邮件(知识点全面)...

    很多小伙伴找我问:老铁,这些代码我写的和你一样,为什么我的不行.其实这是最基本的函数,你照葫芦画瓢是没什么多大的作用的.我不会直接告诉你答案也不是我不想告诉你,而是希望你能跟着思路,自己找到答案,这才 ...

  4. java获取当月有几天_腾讯程序员裸辞3个月,转行去送外卖,曝出当月收入网友:又骗我去送外卖...

    最近在职业论坛看到这样一个热门的帖子,"腾讯员工裸辞3个月,转行去送外卖,曝出当月收入网友:又骗我去送外卖"到底怎么回事?请往下看. 原来一位腾讯员工分享了自己从程序员到外卖员的经 ...

  5. python按键暂停程序_汇总程序员学习python必备的42个快捷键,看完收获满满

    很多程序员在学习python的时候,是否遇到过一些操作不方便且很繁琐小问题,特别还会影响到你工作的进度,或许这50个快捷键能够帮助到你哦! 首先先从Shift系列的按键开始: 1. Shift+Alt ...

  6. python好学吗 老程序员-学习python,难道是为了当一名苦逼的程序员吗?

    最近在和朋友聊天的时候,朋友问了我这样一个问题,问我:你报培训班学习python有用吗?听说程序员虽然工资高,但是工作强度很大,天天加班而且还会遇到中年危机,不像律师,会计这种越老越挣钱.当我听完后, ...

  7. python兼职程序员工资-Python 程序员的工资能有多高?

    最近有朋友向我问起了Python,说Python特别火,抖音.朋友圈到处都在宣传,能大幅度提高办公效率,学得好的甚至能实现办公自动化!Python真的有这么神奇吗? 作为公司的运营,在没有接触过这门神 ...

  8. Python黑马程序员学习路线

    夯实基础(python核心编程 ) python的语言理解, 到灵活解决问题.熟悉linux开发环境,常见算法数据结构(时间复杂度,排序,栈,队列,二叉树).面向对象编程,了解设计模式,掌握单例模式, ...

  9. python新手程序员工资-Python 程序员的工资能有多高?

    最近有朋友向我问起了Python,说Python特别火,抖音.朋友圈到处都在宣传,能大幅度提高办公效率,学得好的甚至能实现办公自动化!Python真的有这么神奇吗? 作为公司的运营,在没有接触过这门神 ...

最新文章

  1. 加速100倍,性能媲美SOTA,浙大知识蒸馏新方法FastDFKD
  2. base64 数据处理
  3. C语言位、字节、半字、字的概念和内存位宽
  4. 第十八:如何定制Pytest+Allure2详细报告生成,给项目量身打造一套测试报告(重点超详细)
  5. Android 程序目录介绍
  6. C语言从入门到精通所需的7本书
  7. Android游戏源码的分析、疑问与交流
  8. 自定义数据字典翻译注解
  9. C# Remoting理解
  10. 声明变量关键字:var、let、const的区别
  11. Kth Largest Element
  12. 刚买个炼狱蝰蛇1800dpi的下完驱动提示没有发现鼠标
  13. C语言(进阶)数据的存储修炼内功
  14. python海龟编辑器中询问并获得输入咱弄出来的积木_海龟Python编辑器下载|海龟编辑器下载 0.8.0_咕噜下载...
  15. leetcode:前 K 个高频元素、删除字符串中的所有相邻重复项、有多少小于当前数字的数字、有效的山脉数组、独一无二的出现次数(JavaScript)
  16. python分析红楼梦出现的虚词词频统计_用Python分析红楼梦,见证贾府的兴衰
  17. 轻松实现word文档在线编辑
  18. NUC 折腾笔记 - 储存能力测试
  19. 【ConfluxNews】2023.3.10 「晒啦」钱包上线Conflux“.Web3用户名”交易功能
  20. 密码学系列(三):区块链+密码学基础知识

热门文章

  1. 阿里云携领先SDN能力,亮相全球网络技术盛会ONS
  2. “5G+AI”到底有啥用?这篇漫画告诉你答案…
  3. QingStor分布式存储全线升级:自研需要勇气,成功还要看实力
  4. 红帽加速开放混合云创新,助力企业成功迈向开源应用时代
  5. 一个数据科学家需要哪些核心工具包?
  6. 【举栗子】Docker 容器磁盘占满的几种情况 | CSDN博文精选
  7. 被吹得天花乱坠的无服务器架构,究竟是什么?
  8. 如何让笨重的系统架构变灵巧?
  9. abrels.inc.php_setlist.js
  10. 电脑两边黑边怎么还原_Mac电脑录制的视频有黑边?如何解决