Python —— 函数的参数 默认参数 可变参数 关键字参数 命名关键字参数

Python中函数的各种类型参数详解 Python中函数的参数类型非常丰富多彩。Python的函数支持的参数类型包括:(1)位置参数(2)默认参数(3) 可变参数(4)关键字参数(5)命名关键字参数。 阅读详情

循环 

continue 和 break

#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
#

n = 0 
while n < 10: 
    n = n + 1 
    if n/2 == 4:
        #continue    满足条件 跳出当前循环
        break       #满足条件 提前结束循环
    print(n)

循环是让计算机做重复任务的有效的方法。

break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用

要特别注意,不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break和continue语句,上面的两个例子,都可以通过改写循环条件或者修改循环逻辑,去掉break和continue语句

有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程


Python内置函数

https://docs.python.org/3/library/functions.html #参考官方文档


函数 def function():

请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑

如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return

位置参数

我们先写一个计算x2的函数

def power(x):
    return x * x

对于power(x)函数,参数x就是一个位置参数。

当我们调用power函数时,必须传入有且仅有的一个参数x

默认参数

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

如果没有设置默认参数: n = 2 则你想执行的时候 print power(2)这种情况默认为平方的情况 则会参数报错

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

上面是一个注册的默认函数 我们的age和city都设置了默认参数 这样在调用此注册函数的时候 就可以减少工作量

>>> enroll('Tom','F')
name: Tom
gender: F
age: 6
city: ChengDu

当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数

使用默认参数最大的好处是能降低调用函数的难度

有多个默认参数时,调用的时候,既可以按顺序提供默认参数,比如调用enroll('Bob', 'M', 7),意思是,除了name,gender这两个参数外,最后1个参数应用在参数age上,city参数由于没有提供,仍然使用默认值

也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。比如调用enroll('Adam', 'M', city='Tianjin'),意思是,city参数用传进去的值,其他默认参数继续使用默认值

注意: 定义默认参数要牢记一点:默认参数必须指向不变对象

此处有个坑 详细例子见 https://www.liaoxuefeng.com/ 函数的参数章节(默认参数定义了一个可变的list)

可变参数

在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个(用于在参数不确定的情况下)

>>> def calc(numbers):
...     sum = 0
...     for n in numbers:
...             sum = sum + n * n
...     return sum
... 
>>> calc(1,3,5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: calc() takes 1 positional argument but 3 were given

这样情况下 定义了一个calc的函数 但是输出参数的时候报错 提示只需要1个参数 但是给了3个

所以这样 我们的参数只能是一个list或者一个tuple 如下

>>> calc([1,3,5])
35
>>> calc((1,3,5))
35

所以 在这种情况下 我们可以把函数定义成可变参数

>>> def calc(*numbers):
...     sum = 0
...     for n in numbers:
...             sum = sum + n * n
...     return sum
... 
>>> calc(1,3,5)
35

定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数

>>> calc()
0

如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做

>>> nums = [1,2,3]
>>> calc(nums[0],nums[1],nums[2])
14

这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去

>>> nums = [1,2,3]
>>> calc(*nums)
14

*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见

关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数

>>> def person(name, age, **kw):
...     print('name:', name, 'age:', age, 'other:', kw)
... 
>>> person('Michael', 30)
name: Michael age: 30 other: {}

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

>>> person('Bob',24,city='ChengDu')
name: Bob age: 24 other: {'city': 'ChengDu'}
>>> person('Bob',24,city='ChengDu',job='Enginner')
name: Bob age: 24 other: {'city': 'ChengDu', 'job': 'Enginner'}
>>> person('Bob',24,city='ChengDu',job='Enginner',gender='F')
name: Bob age: 24 other: {'city': 'ChengDu', 'job': 'Enginner', 'gender': 'F'}

关键字参数有什么用?

它可以扩展函数的功能。比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求

当然,上面复杂的调用可以用简化的写法

>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'ChengDu', 'job': 'Enginner'}

**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra

命名关键字参数

如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。这种方式定义的函数如下

>>> def person(name, age, *, city, job):
...     print(name, age, city, job)
... 
>>> person('Jack', 24, city='ChengDu', job='Engineer')
Jack 24 ChengDu Engineer
>>> person('Jack', 24, 'ChengDu', 'Engineer')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: person() takes 2 positional arguments but 4 were given

和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数

命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错 如上代码报错:由于调用时缺少参数名city和job,Python解释器把这4个参数均视为位置参数,但person()函数仅接受2个位置参数

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

>>> def person(name, age, *args, city, job):
...     print(name, age, args, city, job)

命名关键字参数可以有缺省值,从而简化调用,由于命名关键字参数city具有默认值,调用时,可不传入city参数

>>> def person(name, age, *, city='ChengDu', job):
...     print(name, age, city, job)
... 
>>> person('Jack', 24, job='Engineer')
Jack 24 ChengDu Engineer

注意:使用命名关键字参数时,要特别注意,如果没有可变参数,就必须加一个*作为特殊分隔符。如果缺少*,Python解释器将无法识别位置参数和命名关键字参数(缺少* 即都为识别为位置参数)

参数组合

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数

练习:接收一个或多个参数并计算乘积

>>> def product(*numbers):
...     if numbers is None or len(numbers) <= 0:
...             raise TypeError("Args Not Null!!!")
...     sum = 1
...     for n in numbers:
...             sum = sum * n
...     return sum

小结

Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数

默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误

要注意定义可变参数和关键字参数的语法:

*args是可变参数,args接收的是一个tuple

**kw是关键字参数,kw接收的是一个dict

以及调用函数时如何传入可变参数和关键字参数的语法:

可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3))

关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})

使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法

命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值

定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数


apollo-慢速车向左绕行 当主车前方出现其他车辆时,通过左侧车道对前车绕行。 阅读详情

相关推荐

SRAM故障排查实战:如何用Nano Prober定位6T存储单元的异常点

本文详细介绍了在SRAM故障排查中,如何运用Nano Prober(纳米探针)技术精准定位6T存储单元的内部异常。面对传统方法难以发现的电性参数漂移(如晶体管阈值电压偏移)或微小物理缺陷,Nano Prober能直接对单个6T单元内的晶体管进行I-V特性测量,结合失效模式分析,有效解决读写错误等疑难问题,是芯片失效分析的关键工具。

v5w6x的博客 664

【已解决】TypeError: __init__() takes 1 positional argument but 3 were given

TypeError: __init__()

m0_69555166的博客 7454

系统动力学仿真软件Vensim下载

Vensim是由美国Ventana Systems, Inc.所开发,是采用图示化编程的方式构建系统动力学模型,上手简单。Vensim有很多系列产品,其中Vensim PLE (Personal Learning Edition)是面向个人学习者的,完全免费,可直接官网下载,截止于2022/04/10,最新的Vensim PLE版本是9.2.3。

PMIIᶜᶜ的博客 1万+

Python中位置参数、默认参数、可变参数、命名关键字参数、关键字参数的区别

Python中必选参数、默认参数、可变参数、命名关键字参数、关键字参数的区别:

IT晓可程序员之路 1万+

STM32—时钟树(结合系统时钟函数理解)

时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处。心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来驱动,而这个脉冲的始源往往是由外部晶体振荡器提供时钟输入,最终转换为多个外部设备的周期性运作。这种时钟“能量”的传递路径犹如大树的养分由主干流向个分支,因此称为时钟树。 STM32时钟: 在STM32...

肥宅快乐博客 1万+

PyCharm安装PyQt5及工具(Qt Designer、PyUIC、PyRcc)详细教程来了

Qt是常用的用户界面设计工具,而在Python中则使用PyQt这一工具包,它是Python编程语言和Qt库的成功融合。这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的所有工具包,主要内容包括PyQt5、PyQt5-tools的依赖包安装和Qt Designer、PyUIC、PyRcc三个工具的设置。最后简单演示了PyQt5的调用方式及三个工具的使用方法。

Python966的博客 3万+

python的位置参数、默认参数、关键字参数、可变参数区别

python的位置参数、默认参数、关键字参数、可变参数区别一、位置参数调用函数时根据函数定义的参数位置来传递参数。#!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_dict = {1: u'先生', 2: u'女士'} print 'hello %s %s, welcome to python...

bbbeoy的专栏 2212

STM32Cubemx+CanFestival:从零到一的CANopen移植实战

本文详细介绍了如何使用STM32CubeMX和CanFestival实现CANopen协议栈的移植,从开发环境搭建到核心配置步骤,再到调试与问题排查。通过实战经验分享,帮助开发者快速掌握STM32与CANopen的结合应用,提升嵌入式系统开发效率。

weixin_42558093的博客 420

【python】总结下几种参数得用法---可变参数,关键字参数,命名关键字参数

一。默认参数默认参数,注意一点:必选参数在前,默认参数在后,否则Python的解释器会报错二。可变参数可变参数,意思就是传入参数的个数是可变的,可以是1个,2个,无数个;传入类型为数组list或者元祖tuple...

jc.wang的博客 1万+

为什么你的Mac蓝牙总断连?深入解析硬件干扰与系统设置避坑

本文深入解析Mac蓝牙频繁断连的原因,包括硬件干扰(如WiFi同频干扰、USB设备电磁干扰)和系统设置问题,并提供详细的优化方案和诊断工具(如blueutil)使用指南,帮助用户有效解决蓝牙稳定性问题。

ik67890123的博客 681

荔枝派Nano内核编译

上文编译好uboot之后,想刷内核和根文件系统进去。其实官方的网盘里面,已经有打包好的系统镜像,包含所有的东西,可以直接烧录进flash或者TF卡,但是都是基于winbond芯片的,国产的xt25f128b刷进去妥妥的。所以没办法,只能自己再动手重新编译内核了。(PS:搞的我都想直接买一片w25q128换上了,有点麻烦,希望官方直接涨价或者出两版就行,不然对新手不友好啊)

木子点灯的博客 546

Python入门之必选参数、默认参数、可变参数、关键字参数和命名关键字5种参数

位置参数计算xndef power(x, n): s = 1 while n &gt; 0: n = n - 1 s = s * x return s默认参数eg1:计算x2def power(x, n=2): s = 1 while n &gt; 0: n = n - 1 s = s * x ...

WAF 1875

大华 DSS 数字监控系统 itcBulletin SQL 注入漏洞复现

大华 DSs 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。大华 DSS存在SQL注入漏洞,攻击者 pota/services/itcBuletin 路由发送特殊构造的数据包,利用报错注入获取数据库敏感信息。攻击者除了可以利用 SQL注入漏词获取数据库中的信息例如,管理员后台密码、站点的用户人人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限poc验证是否存在漏洞如果你想查询用户名和密码。

holyxp的博客 4002

python函数的参数:位置参数,默认参数,可变参数,关键字参数,命名关键字参数

首先要清楚,python中的典型数据结构有tuple, list, set 和 dictionary tuple = [1, 2, 3] list = (1, 2, 3) dictionary = {‘Michael’: 95, 'Bob': 75, 'Tony':85} #简化可变参数的调用方法 def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum 可变参数 能

li4692625的博客 462

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

python函数中的几种参数详解(必需参数、默认参数、可变参数、关键字参数、命名关键字参数)

本文对python中的几种参数进行了详细解析,用简单的例子对这几种参数的使用方式进行了剖析,希望帮助到大家!

keepaware的博客 2624

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python之函数默认参数-可变参数-关键字参数-命名关键字参数

##默认参数 def power(x,n=2): if not isinstance(x,(int,float)): raise TypeError ("参数x只能输入int 或者 float") if not isinstance(n,(int,float)): raise TypeError ("参数n只能输入int 或者 float") return x**n #可变参数 def getSum(*nums): sum = 0 ..

tanghui20的专栏 384

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python不同函数参数的概念解读(位置参数、默认参数、可变参数、关键字参数、命名关键字参数)

python不同函数参数的概念解读(位置参数、默认参数、可变参数、关键字参数、命名关键字参数)

qq_36306288的博客 1211

[python]--函数必选参数,默认参数,可变参数,命名关键字参数,关键字参数

内容来自廖雪峰老师博客,本博客属于学习笔记记录型。 函数定义:默认参数必须指向不变对象。 否则如下: >>> def add_end(L=[]): ... L.append('END') ... return L ... >>> add_end([1,2,3]) [1, 2, 3, 'END'] >>> add_end() [...

qq_34358193的博客 401

Python函数参数总结(位置参数、默认参数、可变参数、关键字参数和命名关键字参数)

Python函数的参数多达5种,不像Java那样参数(必选参数)只有一种,而是像C++那样提供默认参数,除此之外,还提供可变参数、关键字参数、命名关键字参数,这样就使得Python函数的参数变得十分复杂。但复杂意味着灵活便捷,Python语言之所以流行起来,与起本身巨大的灵活性是分不开的。可以说Python是最方便使用的语言。 Python参数类型: - 基本参数(就是其他语言所说的参数

Steve Wang's blog 6602

【Python】函数参数总结(位置参数|默认参数|可变参数|关键字参数|命名关键字参数|参数组合)

位置参数 (从左至右进行匹配)是最普遍最常见的类型。 def posFx(a,b): print("a =",a,"b =",b) posFx(1,2) #a = 1 b = 2 posFx(2,1) #a = 2 b = 1 默认参数 (默认参数允许创建函数可选的参数)如果没有传入值的话,在函数运行前,参数就被赋予了默认值。 def defFx(a,b): pri...

咸鱼夏の翻身观察记录 626

python可变参数和关键字参数位置_python笔记——函数的参数(位置参数、默认参数、可变参数、关键字参数、命名关键字参数、参数组合)...

定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。位置参数我...

weixin_39777637的博客 420

python 函数参数:必选参数、默认参数、可变参数、关键字参数 和 命名关键字参数

python 函数参数:必选参数、默认参数、可变参数、关键字参数 和 命名关键字参数 在 Python 中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数 5种参数形式。 这 5 种参数都可以组合起来使用,但是注意,参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。 def f1(a,b,c=0,*args,**kw)

Mr.Scofield 8784

python笔记——函数的参数(位置参数、默认参数、可变参数、关键字参数、命名关键字参数、参数组合)...

定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。 Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。 位...

weixin_30849403的博客 257

python函数之位置参数、默认参数、可变参数、命名关键字参数、关键字参数

1.位置参数: def weizhi(name,age): print(name,age) weizhi('张三',21) #name和age,这两个参数都是位置参数,调用的时候,传入的两个值按照顺序,依次赋值给name和age。 2.默认参数: def moren(name,age=21): print(name,age) mor...

她° 405

python3函数的参数:必选参数(位置参数)、默认参数、可变参数、关键字参数、命名关键字参数

了解python函数的参数,是阅读各种库和源码的必需技能,请认真学习并掌握。1、位置参数:def fn1(a): passdef fn2(a,b): passmsg: pass是占位符,当没有具体功能时,可以使用pass,不会使函数报错上方函数fn1、fn2里的参数都是位置参数,调用时必须给入对应数量的实参,否则会报错2、默认参数:def fn3(a,b=1,c=2): p...

a543402496的博客 4149

python函数参数之必选参数,默认参数,可变参数,关键字参数

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数, 1 默认参数 定义形式:def calc(para1,para2=None):其中para2是默认参数。 意义:可变参数就是传入的参数个数是可变的。可以是1个、2个到任意个,还可以是0个。 设置默认参数需要注意的点: 必选参数在前,默认参数在后;否则不知道你传进的值...

promisejia 4583
上一篇: Python模块 os — Miscellaneous operating system interfaces
下一篇: awk next和getline用法
why_me310
博客等级 码龄9年 3粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值