(小甲鱼python)函数笔记合集二 函数(II)总结 函数的几种参数 位置参数、关键字参数、默认参数 .join()函数的用法等

news2024/11/20 13:17:49

一、基础复习

函数的基本用法 创建和调用函数 函数的形参与实参等等

二、函数的几种参数

1.位置参数
一般情况下实参是按照形参定义的顺序进行传递的,而Python中位置固定的参数我们称为位置参数。

>>> def myfunc(s,vt,o):
	return "".join((o,vt,s))      #颠倒顺序组成字符串并返回

>>> myfunc("我","打了","小甲鱼")       
'小甲鱼打了我'
>>> myfunc("小甲鱼","打了","我")
'我打了小甲鱼'

扩展:函数.join()用法: 将序列(也就是字符串、元组、列表、字典)中的元素以指定的字符连接生成一个新的字符串。

>>> a=["我","打了","小鲫鱼"]  # 列表使用‘空格’作为分隔符
>>> print(" ".join(a))
我 打了 小鲫鱼
>>> print("".join(a))  # 结果
我打了小鲫鱼
>>> 

a='I love China !'      #字符串使用‘空格’作为分隔符
print(' '.join(a))

I   l o v e   C h i n a   !      # 结果

a=('I','love','China','!')        #元祖使用‘空格’作为分隔符
print(' '.join(a))

I love China !        # 结果

a={"I":1,'love':2,'China!':3}         #字典使用‘空格’作为分隔符
print(' '.join(a))

I love China!    # 字典有时结果不一样的原因:字典的读取是随机的结果

2.关键字参数
使用关键字参数只需要知道参数的名字即可。

>>> def myfunc(s,vt,o):
	return "".join((o,vt,s))

>>> myfunc(o="我",vt="打了",s="小甲鱼")
'我打了小甲鱼'

如果同时使用位置参数和关键字参数,则它们的位置需要注意一下,位置参数必须在关键字参数之前,否则会出错。

>>> def myfunc(s,vt,o):
	return "".join((o,vt,s))
>>> myfunc(o="我","清蒸","小甲鱼")   #位置参数必须在关键字参数之前,
SyntaxError: positional argument follows keyword argument
>>>
>>> myfunc("我","清蒸",o="小甲鱼")
'小甲鱼清蒸我'

3.默认参数
Python允许函数参数在定义的时候就指定默认值的,这样的话,在函数调用的时候,如果没有传入实参,就会采用默认的参数来代替。如果使用默认参数,则将其放到最后。

>>> def myfunc(s,vt,o="小甲鱼"):
	return "".join((o,vt,s))

>>> myfunc("香蕉","吃")
'小甲鱼吃香蕉'
>>> myfunc("香蕉","吃","小鲫鱼")  #第三个参数如果赋值,就会覆盖默认值。
'小鲫鱼吃香蕉'

>>> def myfunc(s="苹果",vt,o="小甲鱼"):  #如果使用默认参数,则将其放到最后。
	return "".join((o,vt,s))
SyntaxError: non-default argument follows default argument

>>> def myfunc(vt,s="苹果",o="小甲鱼"):  #正确写法,默认参数放最后。
	return "".join((o,vt,s))

>>> myfunc("喜欢吃")
'小甲鱼喜欢吃苹果'

三、help()函数冷门用法

1.help()函数与abs()和sum()联用讲解关键字参数
通过观察abs(x, /)中反斜杠的位置来判断关键字参数。主要看第二点help()函数与sum()函数联用讲解关键字参数。

斜杠的意思为斜杠左侧的参数,它必须传递位置参数,而不能是关键字参数

>>> help(abs)    
Help on built-in function abs in module builtins:

abs(x, /)
    Return the absolute value of the argument.

abs()函数求绝对值
举例:

>>> abs(-1.5)
1.5
>>> abs(x=1.5)    # abs(x, /)斜杠左侧必须为位置参数。
Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    abs(x=1.5)
TypeError: abs() takes no keyword arguments

2.help()函数与sum()函数联用讲解关键字参数

  • python版本号3.7.3使用help()查看sum()函数的用法,显示sum(iterable, start=0, /),其中反斜杠在最后面,
>>> help(sum)
Help on built-in function sum in module builtins:

sum(iterable, start=0, /)
    Return the sum of a 'start' value (default: 0) plus an iterable of numbers
    
    When the iterable is empty, return the start value.
    This function is intended specifically for use with numeric values and may
    reject non-numeric types.
  • python3.9.9版本关于sum函数的用法显示sum(iterable, /,start=0)

斜杠的意思为斜杠左侧的参数,它必须传递位置参数,而不能是关键字参数

python版本不同,sum函数中反斜杠的位置不同。
在这里插入图片描述这里举例使用 python版本3.9.9sum(iterable, /,start=0)这种用法来讲解:

>>> sum([1,2,3],4)  #左侧只能使用位置参数,右侧位置参数和关键字参数都可以。
10
>>> sum([1,2,3],strat=4)
10

自定义函数也是遵从这一语法:左侧只能使用位置参数,右侧位置参数和关键字参数

def abc(a,/,b,c):
    print(a,b,c)

>>> abc(1,2,3)
1 2 3
>>> abc(a=1,2,3)  #斜杠左侧只能使用位置参数
SyntaxError: positional argument follows keyword argument

>>> abc(3,b=2,c=1)
3 2 1

只能使用关键字参数的语法: 用星号*
星号的左侧既可以是位置参数,也可以是关键字参数,右侧只能是关键字参数。

>>> def abc(a,*,b,c):
	print(a,b,c)

>>> abc(1,2,3)     # 右侧只能是关键字参数
Traceback (most recent call last):
  File "<pyshell#51>", line 1, in <module>
    abc(1,2,3)
TypeError: abc() takes 1 positional argument but 3 were given
>>> abc(1,b=2,c=3)
1 2 3
>>> abc(a=1,b=2,c=3)
1 2 3
>>> 

课后题:
1.如果一个函数要求传递位置参数,那么颠倒实参的顺序,肯定会报错,是吗?
答:也不一定。
解析:比如 min() 或者 max() 函数,参数顺序没有要求。
2.默认参数跟关键字参数有啥区别?
答:位置不同,默认参数是存在于函数定义中的,而关键字参数是在函数调用中发挥作用。
解析:在函数定义的时候,使用等号(=)来表示默认参数,默认参数的优点是如果没有传入实参,那么将采用默认的参数值代替;在函数调用的时候,使用等号(=)来表示关键字参数,关键字参数的优点是不需要顾虑参数的传递顺序(除非在定义中有 “特殊” 的声明)。
3.任何支持传递位置参数的函数,都可以使用关键字参数吗?
答:也不全是。
解析:见下题解析。
4.请问下面代码是否会报错,为什么?

>>> def abc(a, /, b, c):
...     print(a, b, c)
...
>>> abc(a=3, b=2, c=1)
# 请问这里会报错吗?

答:会报错!
解析:在函数的定义中出现斜杠(比如 abs(x, /)),表示在其左侧的参数必须传递位置参数,而不能是关键字参数(右侧则无所谓)。

>>> abs(x = -250)
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    abs(x = -250)
TypeError: abs() takes no keyword arguments

咱们自己定义函数,也是遵从这么一个语法:

>>> def abc(a, /, b, c):
...     print(a, b, c)
... 
>>> abc(1, 2, 3)
1 2 3
>>> abc(a=3, b=2, c=1)
Traceback (most recent call last):
  File "<pyshell#82>", line 1, in <module>
    abc(a=3, b=2, c=3)
TypeError: abc() got some positional-only arguments passed as keyword arguments: 'a'
>>> abc(3, b=2, c=1)
3 2 1

题目来自小甲鱼函数II

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/159315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低成本MEMS INS系统 + GNSS组合导航MATLAB仿真

感谢西工大严老师的无私奉献&#xff01;&#xff01; 低成本MEMS INS系统 GNSS组合导航MATLAB仿真感谢西工大严老师的无私奉献&#xff01;&#xff01;一、kalman参数初始化——kfinit()二、imu添加误差——imusdderr()三、imu位姿更新——insupdate()四、kalman误差方程——…

【1】K8s的组件及概念

目录 1、K8s的组件 2、组件概念 1、K8s的组件 一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成&#xff0c;每个节点上都会安装不同的组件。 master: 集群的控制平面&#xff0c;负责集群的决策 ApiServer:资源操作的唯一入口&#xff0c;接收用户输入的命令…

ArcGIS基础实验操作100例--实验92以图形与表格构建趋势面

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验92 以图形与表格构建趋势面 目录 一、实验背景 二、实验数据 三、实验步骤 &#xf…

ts实现简易观察者模式

什么是观察者模式 观察者模式能让你时刻知悉对象状态的变化的一种设计模式,是一种一对多依赖的关系,比如报纸的订阅 生活中随处可见的观察者模式(猎头与求职者): headfirst设计模式气象站案例 通知更新的方式有两种: 主题推给观察者和观察者自己去主题拉取两种方式,大部分实现…

年中盘点 | 2022年,PaaS 再升级

过去十五年&#xff0c;是云计算从无到有突飞猛进的十五年。PaaS 作为云计算的重要组成部分&#xff0c;在伴随着云计算高速发展的同时&#xff0c;在云计算产业链中的关键性作用日渐凸显。关于 PaaS&#xff0c;很多人都认同一个观点&#xff0c;在公有云上&#xff0c;除了 I…

【寒假每日一题】AcWing 4699. 如此编码

目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 一、题目 1、原题链接 4699. 如此编码 - AcWing题库 2、题目描述 某次测验后&#xff0c;顿顿老师在黑板上留下了一串数字 23333便飘然而去。 凝望着这个神秘数字&#xff…

雄关漫道真如铁,而今迈步从头越 | 挥别2022,再战2023!

挥别2022年 这一年&#xff0c;虽面临诸多挑战&#xff0c;但我们充满干劲儿 向下扎根&#xff0c;向上生长 这一年&#xff0c;我们风云十载&#xff0c;厚积薄发 站在2023年的开端 让我们一起回顾博云2022年的这些成绩 No.1 专精特新&#xff0c;示范引领 2022年8月&am…

【鸟哥杂谈】Linux环境搭建Redis

忘记过去&#xff0c;超越自己 ❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-01-12 ❤️❤️ 本篇更新记录 2023-01-12 ❤️&#x1f389; 欢迎关注 &#x1f50e;点赞 &#x1f44d;收藏 ⭐️留言&#x1f4dd;&#x1f64…

指针笔试题详细介绍,让你不再惧怕指针【c语言】

int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1); //&a1的类型是int&#xff08; * &#xff09;[5]printf( "%d,%d", *(a 1), *(ptr - 1));//输出2 5 return 0; }&a&#xff0c; 取出整个数组的地址&#xff0c;放在一个数组指针中…

你拿了多少年终奖?

见字如面&#xff0c;我是军哥&#xff01;前几天我看到一个大 V 调研他的程序员粉丝&#xff0c;都拿了多少年终奖&#xff1f;结果可想而知&#xff0c;2000 多人参与问卷调查&#xff0c;53% 左右的人说今年没有年终奖。另外&#xff0c;我估计大多数人今年的年终奖金额相比…

超能面板PRO搭载北京君正研发的X2000多核异构跨界处理器

每一座建筑&#xff0c;都承载着它独特的生活方式。隐匿在老胡同里的四合院&#xff0c;见证了大院三代同堂的喧闹欢愉&#xff0c;散落在烟雨中的园林小院散发着对诗意生活的淡然向往。在一代又一代的变迁中&#xff0c;逐渐形成了符合居住者气质的生活方式。历史与现代在不断…

等差素数数列

问题描述&#xff1a; 2,3,5,7,11,13,…是素数序列。 类似&#xff1a;7,37,67,97,127,157 这样完全由素数组成的等差数列&#xff0c;叫等差素数数列。 上边的数列公差为30&#xff0c;长度为6。 2004年&#xff0c;格林与华人陶哲轩合作证明了&#xff1a;存在任意长度的素数…

事件总线 + 函数计算构建云上最佳事件驱动架构应用

作者 | 史明伟&#xff08;世如&#xff09; 距离阿里云事件总线&#xff08;EventBridge&#xff09;和 Serverless 函数计算&#xff08;Function Compute&#xff0c;FC&#xff09;宣布全面深度集成已经过去一年。站在系统元数据互通&#xff0c;产品深度集成的肩膀上&…

《面试八股文》之GitHub中文社区Java 领域又一份备战神器,开冲金三银四

今天讲讲跳槽。 新年即将开启&#xff0c;一些不满现状&#xff0c;被外界的“高薪”“好福利”吸引的人&#xff0c;一般就在这时候毅然决然地跳槽了。 跳槽是为了寻求更好的发展&#xff0c;但在跳槽前我们也不能确定下家就是更好的归宿&#xff0c;这就更加需要我们审慎地去…

前端号外—2022年明星项目居然是它,Node.js危已?

导读 | 2022年是艰难的一年&#xff0c;不仅有互联网的寒冬、还有新冠疫情的洗礼。但是似乎这一切都阻挡不了JavaScript的内卷&#xff0c;一年不长不短的时间中&#xff0c;JavaScript从创新、性能、功能等多维度深度进化&#xff0c;给前端带来了诸多惊喜。本文基于github上流…

JVM调优简介

数据类型 java虚拟机中&#xff0c;数据类型可以分为两类&#xff1a;基本类型和引用类型。 基本类型的变量保存原始值&#xff0c;即&#xff1a;它代表的值就是数值本身&#xff0c;而引用类型的变量保存引用值。 “引用值”代表了某个对象的引用&#xff0c;而不是对象本身&…

JSP内置对象详解 常用方法

目录 out request response session application exception page config pageContext JSP内置对象的作用域 JSP内置对象是在JSP运行环境中已定义好的对象&#xff0c;可在JSP页面的脚本部分直接使用。 out对象 out 为输出流对象&#xff0c;主要用于向客户端输出流…

Java-容器

一、ListArrayList<>&#xff08;变长数组&#xff09;实现add( )&#xff1a;在末尾添加一个元素clear( )&#xff1a;清空size( )&#xff1a;返回长度isEmpty( )&#xff1a;是否为空get(i)&#xff1a;获取第i个元素set(i, val)&#xff1a;将第i个元素设置为val&…

以太网接口电路设计

标准的以太网接口是这种RJ45的连接器它总共8个引脚&#xff0c;当设计成千兆以太网时&#xff0c;这8个引脚都会用到&#xff0c;大家可以看下千兆以太网引脚的信号定义&#xff0c; 0&#xff0c; 0-&#xff0c; 1&#xff0c; 1-&#xff0c; 2&#xff0c; 2-&#xff0c; …

计算机体系结构详解

文章目录1 概述1.1 计算机体系结构图1.2 计算机硬件系统图2 网工软考真题3 扩展1 概述 1.1 计算机体系结构图 1.2 计算机硬件系统图 冯 诺依曼 设计的体系结构&#xff0c;由 CPU&#xff08;运算器、控制器&#xff09;、存储器、输入/输出设备&#xff08;I/O&#xff09;…