Python3 From Zero——{最初的意识:007~函数}

一、编写可接受任意数量参数的函数:*、**

>>> def test(x, *args, y, **kwargs):
...  pass
... 
>>> test(1, 2, 3, 4 ,5 ,5, y=9, aa=99, bb=88,cc=900)
>>> test(1, 2, 3, 4 ,5 ,5, 9, aa=99, bb=88,cc=900)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: test() missing 1 required keyword-only argument: 'y'

#以*打头的参数只能作为最后一个位置参数出现,以**打头的参数只能作为最后一个参数出现;*args之后仍然可以有其它的参数出现,但只能是关键字参数(keyword_only)

二、编写只接受关键字参数的函数

>>> def test(*, x, y):
...  pass
... 
>>> test(8, 9)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: test() takes 0 positional arguments but 2 were given
>>> test(x=9, y=8)

#星号*之后的参数都是keyword_only参数

三、函数注解

>>> def add(x:int ,y:int) ->int:
...  return x + y
... 
add.__annotations__
{'x': <class 'int'>, 'return': <class 'int'>, 'y': <class 'int'>}

#函数注解只会保存在函数的__annotations__属性中;因为Python中没有类型声明,函数注解可以用于提示

四、从函数中返回多个值:各返回值之间以逗号“,”分隔,本质上是返回一个tuple,可通过tuple解包实现返回多个值的目的

>>> def myfun():
...  return 1, 2, 3
... 
>>> x, y, z = myfun()
>>> x
1
>>> y
2
>>> z
3
>>> a = myfun()
>>> a
(1, 2, 3)

五、定义带有默认参数的函数

  默认参数只会在函数定义时被绑定一次

>>> x = 44
>>> def sample(a=x):
...  print(a)
... 
>>> sample()
44
>>> x = 88
>>> sample()
44

  默认参数的默认值通常应该是不可变对象;若设置可变对象,应参照如下方式:

>>> def test(a, b=None):
...  if b is None:
...   b = []
...  pass
... 

六、嵌套函数

>>> def xxx(m):
...  def yyy(n):
...   return m + n
...  return yyy
... 
>>> xxx(20)    #可对比嵌套列表的逻辑进行理解
<function xxx.<locals>.yyy at 0x7f68c3aef0d0>
>>> xxx(20)(20)   #给内嵌的函数参数赋值
40
>>> def test(m):
...  return lambda n: m + n    #实现原理上,lambda可以理解为嵌套函数
... 
>>> test(20)(20)
40

七、让带有N个参数的可调用对象以较少的参数形式调用

  即:给一部分参数预先斌予固定值,相当于转化成一个带有默认值的函数

>>> def sum(a, b, c, d):
...  return a + b + c + d
... 
>>> sum(1, 2, 3, 4)
10
>>> import functools
>>> test_0 = functools.partial(sum, b=2, c=3, d=4)
>>> test_0(1)
10
>>> test_0(100)
109

  也可使用lambda函数实现

>>> test_1 = lambda a, b=2, c=3, d=4: sum(a, b, c, d)
>>> test_1(1)
10
>>> test_1(100)
109

转载于:https://www.cnblogs.com/hadex/p/5767176.html

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

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

相关文章

mysql 数据库名称限制_mysql 数据库名称限制

mysql 数据库名称限制云服务器(Elastic Compute Service&#xff0c;简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备&#xff0c;让您像使用水、电、天然气等公共资源一样便…

视频图像不正常的几个表现及解决方法

1、 图像发白的原因? 1、检查是否镜头圈调行过大而导致图像发白; 2、在检查摄像机后有一自动光圈亮度辅助调整电位器&#xff0c;是否因电位器调得过大; 3、检查监视器亮度&#xff0c;对比度是否调得过大或故障. 2、 图像质量不好的原因? 检查镜头是否有指纹或太脏。检查光圈…

redis watch multi exec 关系

EXEC 执行所有事务块内的命令。 假如某个(或某些) key 正处于 WATCH 命令的监视之下&#xff0c;且事务块中有和这个(或这些) key 相关的命令&#xff0c;那么EXEC 命令只在这个(或这些) key 没有被其他命令所改动的情况下执行并生效&#xff0c;否则该事务被打断(abort)。 返回…

Chrome 控制台指南

转自&#xff1a;http://blog.jobbole.com/76985/ Chrome的开发者工具已经强大到没朋友的地步了&#xff0c;特别是其功能丰富界面友好的console&#xff0c;使用得当可以有如下功效&#xff1a; 更高「逼格」更快「开发调试」更强「进阶级的Frontender」Bug无处遁形「Console大…

专家:大数据等新技术助力信息融合

ACCA中国区政策主管钱毓益本周末在出席由上海国家会计学院主办的“管理会计&#xff1a;融合与创新”论坛时表示&#xff1a;新一轮以移动互联网、物联网和云计算及大数据为代表的信息技术&#xff0c;将融合与创新发展表现得淋漓尽致。 钱毓益指出&#xff0c;通过数字化转型与…

python数据类型汇总_python基础数据类型汇总

#!/usr/bin/env python# -*- encoding:utf-8 -*-# author:Administrator# make_time:2018/6/9‘‘‘数据类型&#xff1a;不可变数据类型&#xff1a;int、str、bool、tuple、frozenset可变数据类型&#xff1a;list、dict、set公共方法&#xff1a;count()、len()、del、copy(…

开发实战细节之——关于整型转换为字符串类型的性能与实现分析

细节决定成败&#xff0c;开发中往往从一些细节就可以看出一个程序员的开发水准&#xff0c;下面我就给大家分享一下开发中最最常见的int转换为String类型的方法及其性能解析。 一般大家最常用的方法有 方法一&#xff1a;String s1 String.valueOf(i); 方法二&#xff1a;St…

华为服务器故障灯不开机_华为服务器日常维护及故障处理介绍V.ppt

通电策略 power on上电自动开机。 power off上电不自动开机&#xff0c;需按前面板电源按钮才能开机。 Last State上电开机与否取决于上次断电之前的状态&#xff0c;如果是关机状态则通电后不能自动开机&#xff0c;如果是开机状态则通电后可以自动开机。 硬件狗 BMC WDT Acti…

《黑客大曝光:移动应用安全揭秘及防护措施》一2.2 攻击与对策

本节书摘来自华章出版社《黑客大曝光&#xff1a;移动应用安全揭秘及防护措施》一书中的第2章&#xff0c;第2.2节&#xff0c;作者 &#xff08;美&#xff09;Neil Bergman &#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众号查看 2.2 攻击与对策 好&#xff0c…

Android 4.2 通知通过PendingIntent启动Activity失败的问题

今天突然发现在Android 4.2手机上点击通知消息无法打开Activity的问题&#xff0c;具体Logcat信息如下&#xff1a; 01-09 11:37:43.733: WARN/ActivityManager(92): Unable to send startActivity intent java.lang.SecurityException: Permission Denial: starting Intent { …

ubuntu安装sublime

添加sublime text 3的仓库&#xff1a; sudo add-apt-repository ppa:webupd8team/sublime-text-3 更新软件库 sudo apt-get update 安装Sublime Text 3: sudo apt-get install sublime-text-installer 安装sublime2: sudo add-apt-repository ppa:webupd8team/sublime-text-2 …

jdbctemplate mysql 配置_Spring JDBCTemplate配置使用

一、开发环境Windows 10IntelliJ IDEA 2016.1 旗舰版JDK1.8二、项目和数据库结构项目结构&#xff1a;数据库(MySQL 5.5.39)&#xff1a;/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50539Source Host : localhost:3306Source Database : …

细数家庭安防五大乱象 何时能步入正轨

虽然智能家居行业在我国的成长已逾十个年头了&#xff0c;但是目前市场离成型仍然有一段距离。市场上可谓“乱象”丛生&#xff0c;这些绊脚石严重阻碍了行业的良性发展。市场乱象繁生&#xff0c;智能家居从概念炒作到价格高抬&#xff0c;相关预测显示&#xff0c;若真如电商…

HDU 1181 变形课

Problem Description呃......变形课上Harry碰到了一点小麻烦,由于他并不像Hermione那样可以记住全部的咒语而任意的将一个棒球变成刺猬什么的,可是他发现了变形咒语的一个统一规律:假设咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体. Harry已经将他所会的…

多线程(同步代码块和同步函数)

线程安全问题 当多条语句在操作同一个线程共享数据时&#xff0c;一个线程对多条语句只执行了一部分&#xff0c;还没有执行完&#xff0c; 另一个线程参与进来执行。导致共享数据的错误。解决办法&#xff1a; 对多条操作共享数据的语句&#xff0c;只能让一个线程都执行…

没有基础学python_python没有基础好学吗

什么是Python&#xff1f;Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言&#xff0c;比如非常难学的C语言&#xff0c;非常流行的Java语言&#xff0c;适合初学者的Basic语言&#xff0c;适合网页编程的JavaScript语言等&#xff0c;Python是他们其中…

C++中的头文件和源文件

一、C编译模式 通常&#xff0c;在一个C程序中&#xff0c;只包含两类文件——cpp文件和h文件。cpp文件被称作C源文件&#xff0c;里面放的都是C的源代码&#xff1b;h文件则被称作C头文件&#xff0c;里面放的也是C的源代码。 C 语言支持“分别编译”&#xff08;separ…

Hibernate 事物隔离级别 深入探究

目录 一、数据库事务的定义 二、数据库事务并发可能带来的问题 三、数据库事务隔离级别 四、使用Hibernate设置数据库隔离级别 五、使用悲观锁解决事务并发问题 六、使用乐观锁解决事务并发问题 Hibernate事务与并发问题处理&#xff08;乐观锁与悲观锁&#xff09; 一、数据库…

Linked List Cycle II - LeetCode

Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note: Do not modify the linked list. Follow up:Can you solve it without using extra space? 思路&#xff1a;维护两个指针slow和fast。先判断是否存在环。 在判断是否…

mysql 无论输入什么都是现实 not found_NotAPanda

前言面试竞争力越来越大&#xff0c;是时候撸一波Vue和React源码啦&#xff1b;本文从20个层面来对比Vue和React的源码区别&#xff1b;如果需要了解API的区别&#xff0c;请戳&#xff1a;Vue 开发必须知道的 36 个技巧React 开发必须知道的 34 个技巧文章源码&#xff1a;请戳…