首页 > 编程语言 >跟着廖雪峰学python 005

跟着廖雪峰学python 005

时间:2023-02-19 15:37:27浏览次数:41  
标签:city name python age 雪峰 参数 005 def 函数

 函数的调用、定义、参数 

​编辑

 #######命名关键字参数没完

abs()函数:绝对值

>>> abs(100)
100
>>> abs(-20)
20

max()函数:接收任意多个参数,并返回最大的那个

>>> max(1, 2)
2
>>> max(2, 3, 1, -5)
3

数据类型转换函数:

int():整数

float():浮点型

str():字符型

bool():布尔型

定义函数

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

执行到return时,函数就执行完毕,并将结果返回

如果已经把my_abs()的函数定义保存为abstest.py文件了,那么,可以用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名):

空函数

如果想定义一个什么也不做的空函数,可以用pass语句:

def nop():
    pass

pass 用来作为占位符,比如没想好写什么函数代码,可以先放个pass让整体代码正常运行

pass也可以用在其他语句

if age >= 18:
    pass

这句缺少pass,代码就会有语法错误

返回多个值

比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的坐标:

import math  #表示导入math包,并允许后续代码引用包里的sin、cos等函数


def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

python多值返回就是返回一个tuple

​编辑

 函数参数

位置参数

计算_X{}^{2}<span class="cke_reset cke_widget_drag_handler_container"><img src="/i/l/?n=23&i=blog/1975815/202302/1975815-20230219151815511-72735130.gif" width="15" height="15" class="cke_reset cke_widget_drag_handler" title="点击并拖拽以移动" data-cke-widget-drag-handler="1" data-mce-src="/i/l/?n=23&i=blog/1975815/202302/1975815-20230219151815511-72735130.gif"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸">​<span class="cke_widget_edit_container" title="编辑图片">编辑的函数:

def power(x):
    return(x*x)

计算^{X_{}^{n}}<span class="cke_reset cke_widget_drag_handler_container"><img src="/i/l/?n=23&i=blog/1975815/202302/1975815-20230219151815511-72735130.gif" width="15" height="15" class="cke_reset cke_widget_drag_handler" title="点击并拖拽以移动" data-cke-widget-drag-handler="1" data-mce-src="/i/l/?n=23&i=blog/1975815/202302/1975815-20230219151815511-72735130.gif"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸">​<span class="cke_widget_edit_container" title="编辑图片">编辑的函数:

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

x和n都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和n

把第二个参数n的默认值设定为2:

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

此时,power(5)和power(5,2)等价

若n>2,就必须明确地传入n,比如power(5,3)

注意:

必选参数在前,默认参数在后,否则Python的解释器会报错(容易产生歧义)

当函数有多个参数时,把变化大的参数放在前面,默认参数放在后面(降低调用函数的难度)

如:

def enroll(name, gender, age=6, city='Beijing'):
    print('name:', name)
    print('gender:', gender)
    print('age:', age)
    print('city:', city)

大多数学生注册时不需要提供年龄和城市,只提供必须地两个参数即可

enroll('Bob', 'M', 7)
enroll('Adam', 'M', city='Tianjin')

​编辑

可变参数

传入的参数个数是可以变的

如:给一组数字,计算平方和(作为一个list或tuple传进来)

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

若函数参数为可变参数:

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

定义可变参数和定义一个list或tuple参数相比,只是在参数前面加一个 * 号,参数numbers接收到的是一个tuple。调用该函数时,可以传入任意个参数,包括0个参数

 关键参数:

 关键字参数允许你传入0个或任意个含参数名的参数:

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

也可以传入任意个数的关键字参数:

>>> person('Michael', 30)
name: Michael age: 30 other: {}
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

关键参数可以扩展函数功能。比如,person函数name和age两个参数是必选项,但如果提供更多的参数就需要利用关键字参数

可以把字典转换为关键字参数传进去:

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
​​
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, city=extra['city'], job=extra['job'])
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

标签:city,name,python,age,雪峰,参数,005,def,函数
From: https://www.cnblogs.com/DJC-Allen/p/17134801.html

相关文章

  • 使用python批量转换.jfif文件为.jpg
    python代码如下,有需要的自行取用:需要引入Image库,方法是:pipinstallImage importosfromPILimportImageroot_dir=r'C:\temp'deflist_files(root_dir):......
  • python--matplotlib(1)
    前言 Matplotlib画图工具的官网地址是http://matplotlib.org/Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示。......
  • 运行python程序时显示killed
    这是由于内存不足导致,以下命令可以拓展内存:sudoswapoff/swapfilesudoddif=/dev/zeroof=/swapfilebs=1Mcount=30720oflag=appendconv=notruncsudomkswap/sw......
  • python正则表达式
    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。python中提供了re模块用于正则表达式的匹配1、re.findall:在字符串中找到正则表达式所......
  • python 导出依赖包
    freeze方式pip自带的命令、此方式可将环境内所有已安装依赖包导出到文件中、适合于虚拟环境workon$name#进入虚拟环境pipfreeze>r......
  • TensorRT教程(六)使用Python和C++部署YOLOv5的TensorRT模型
    前言 今天这里主要介绍使用Python部署TensorRT的模型以及使用C++部署TensorRT的模型这两种方法。其实在日常部署的工作中,更多是使用C++进行部署,因为这样可以更加丝滑地迁......
  • 软件测试|Python列表的使用,你都会了吗?(二)
    前言上一篇文章我们主要讲述了Python列表的一些基本操作,本篇文章我们继续讲述Python列表的其他操作。列表中添加元素Python提供了append()方法用于列表添加元素。代码如下:......
  • 软件测试|超好用超简单的Python GUI库——tkinter
    前言如果我们想要使用Python创建一个GUI界面,我们应该使用哪个库?Python有没有实现这个功能的库?答案是肯定的,Python的库这么多,肯定有实现上述功能的库,那么我们应该使用哪一......
  • 软件测试|教你使用Python实现五子棋游戏(一)
    前言五子棋是我们传统的益智游戏之一,老少皆宜,上手简单,对于锻炼逻辑思维,增强思考能力有很大帮助。那么,我们能不能使用Python来写出五子棋的程序呢,毕竟不是什么时候都有对手和......
  • 软件测试|教你使用Python快速绘制酷炫词云图
    前言词云图现在似乎成了各个互联网产品年终盘点的标准形式,比如我们的热搜,我们QQ音乐网易云音乐最喜欢的歌手最喜欢的歌曲等等,词云图实在是太契合互联网时代了。那么我们能不......