Python自学记录——调用函数和定义函数

对于函数,我的理解是 抽象的方法。你不需要它是内部结构是什么样子的,只要遵从它给你的规则来使用,就能得到想要的效果。

调用函数

在 Python 中,有很多内置的函数供我们调用,常用的函数如下:

help(obj)帮助,解释传入的obj
type(obj)查看传入obj的类型
callable(obj)查看obj是否可以像函数被调用
isinstance(obj,cls)查看obj的数据类型是否符合cls中的数据类型
chr(i)把一个 ASCII 数值变成字符
ord(i)把一个字符变成 ASCII数值
str(obj)把obj的数据格式转换成字符串
list(seq)把一个序列转成 list
tuple(seq)把一个序列转成 tuple
dict(list)把 list 转为 dict , 要求 list 类型:[ ['key',value],['key',value]]
int(x)把传入的值转成整型
bool(x)把传入的值转成布尔型
float(x)把传入的值转成浮点型
hex(x)把整数x变成十六进制表示的字符串
max(seq)返回序列中最大的数
min(seq)返回序列中最小的数
abs(x)把传入的值转成绝对值

help的示例如下:


其他函数使用示例如下:


同上,其他函数使用示例如下:


函数是可以起别名的,比如,绝对值函数 abs ,起别名为 jd ,示例如下:


解释一下,上述代码中,定义了一个变量 jd ,并把变量指向 abs 函数,所以可以通过 jd 调用函数 abs 。

更多函数,请查询官网:https://docs.python.org/3/library/functions.html

定义函数

在 Python 中,定义函数要使用 def 语句,使用方式如下:

def 函数名(参数):

以绝对值函数 abs 的简化示例如下:


输入完成后敲击回车,会进入下一行,若输入完成,没有继续要输入的东西了,再出现上图示例三个点后,再敲击下回车键即可。

若想先写个空函数,留着以后使用,需要再执行方法代码出写 pass ,否则会报错。正确写法如下:


使用自己定义的函数时,有一点需要注意,在调用函数的时候,需要加括号,尤其是无参函数的时候,示例如下:


如上图所示,在没有写括号时,系统报错了,写上括号,正常~

继续往下,我们通过测试函数想要得到的是数字的绝对值,如果输入字符串呢?

在这里我发现了Python2.X 和 Python3.X 版本的区别问题,嗯,比较麻烦。。

在Python2.X里,还用上面的那个求绝对值的测试函数,输入字符串,得到的如下方所示:

>>> nabs('A')
'A'

而在Python3.X中,得到的如下方所示:

>>> nabs('A')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in my_abs
TypeError: unorderable types: str() >= int()

一个报错,一个不报错。。。介于上述结果,我决定以后大部分用自带的代码格式做示例。

关于Python2.X和Python3.X的版本问题,我找到一篇比较全的-->传送门<--感兴趣的可以看下,下述段落文字是百度到的:

一到2018年12月31日为止,所有的NumPy版本都将完全支持Python2和Python3。 
从2019年1月1日开始,任何新的功能版本都只支持Python3。 
2020年1月1日,我们将结束对Python2支持版本最后的社区支持。

为了完善测试的绝对值函数,我们需要加一个判断,若输入的不是数字,告诉用户,传参传错了,示例如下:


如上图所示,其中 if not  是将后面判断的结果取反,比如:条件是 2>1,应该返回的True ,使用 if not 返回的就是 False ;

isinstance是判断传入数据类型的函数,判断传入值得数据类型是否符合 int 或 float ;

raise 是当程序出现错误,手动抛出异常。一旦执行了 raise 语句,raise 后面的语句将不能执行。TypeError 是Python 自带的常见的异常类型。异常的相关问题,后文会有专门的一篇来说明。完成后会在此处加链接。

在 Python 中,函数可以返回多个值,但返回的方式是以 tuple 来实现的。在 Python 语法中,返回一个 tuple 可以省略括号,而多变量可以同时接受一个 tuple,按照位置赋值,所以说,返回多个参数其实是返回一个 tuple,这样写比较方便。

如果,你已经把函数定义保存为 .py 的文件了,存储时一定要存储在 python 安装同一路径下。调用 .py 里的函数,如下所示: 

>>>from myabs import my_abs
>>>my_abs(-100)
100

其中,from 后面的第一个位置上的是 .py 的文件名,import 后面的是调用的函数名,连起来是 取 myabs.py 文件中的 my_abs 方法。调用成功后,直接输入调用的函数名就可正常使用函数。

下面写一个 解  一元二次方程 的示例,有很多不完善,相互学习:

import math
def abss(a,b,c):
	if (math.pow(b,2)-4*a*c)<0:
		return 'error'
	else:
		x1 = (-b+math.sqrt(math.pow(b,2)+-4*a*c))/2*a
		x2 = (-b-math.sqrt(math.pow(b,2)+-4*a*c))/2*a
		if x1 == x2:
			return ('x only one,x='+str(x1))
		else:
			return('x1='+str(x1)+' ,x2='+str(x2))

运行结果如下图:


如上,返回的是字符串。测试调试时需注意,在软件中改好后,运行一遍出错后,一定要先用 exit() 关闭当前CPython编译器,再在cmd 上输入python 打开编译器,重新输入读取本地文件方法的语句,再重新输入参数执行函数,否则会重复报一个错,即使改变,还是报错。

本篇结束,继续学习~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值