# def my_abs(x):
# if not isinstance(x,(int,float)):#参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数isinstance()
# raise TypeError('错误的数据类型')
# if x >= 0:
# return x
# else:
# return -x
# print(my_abs(-300))
# print(my_abs('abc')) # import math
# def move(x,y,step,angle=0):
# nx = x + step * math.cos(angle)
# ny = y + step * math.sin(angle)
# return nx,ny#返回值是一个tuple
# print(move(100,70,60,math.pi/6)) # def nop():
# pass#pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来
# print(nop()) #位置参数
# def add(x):
# return x + 1
# print(add(1)) #默认参数
#一是必选参数在前,默认参数在后,否则Python的解释器会报错。
#当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
# def power(x,n=2,y=6):
# s = 1
# print(y)
# while n > 0:
# n = n - 1
# s = s * x
# return s
# print(power(5,2))
# print(power(10))
# print(power(5,y=200))#默认参数可以指定参数名称来传参,y参数用传进去的值,其他默认参数继续使用默认值。 # #定义默认参数要牢记一点:默认参数必须指向不变对象l=[],用l=None这个不变对象来代替l=[]。
# def arr(l=None):
# if l is None:
# l = []
# l.append('abc')
# return l
# print(arr()) #可变参数
# def calc(*numbers):#定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号,函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变
# sum = 0
# for num in numbers:
# sum = sum + num * num
# return sum
# print(calc(1,2,3,4,5,6))
# print(calc())#调用该函数时,可以传入任意个参数,包括0个参数 # nums = [1,2,3,4,5,6,7,8,9]
# print(calc(*nums))#*nums表示把nums这个list的所有元素作为可变参数传进去 #关键字参数
# def person(name,age,**kw):#关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
# print('name',name,'age',age,'other',kw)
# person('傻狗1',100,city='傻狗2') # extra = {'city':'傻狗4','job':'傻狗5'}
# person('傻狗3',200,**extra)#相当于person('傻狗3', 200, city=extra['city'], job=extra['job'])
#**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。 #命名关键字参数
# def person(name,age,*,city,job):#命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数
# print(name,age,city,job)
# person('傻狗1',100,city='傻狗3',job='傻狗4')
# def person(name,age,*args,city='傻狗2',job):#如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了
# print(name,age,args,city,job)
# arr = [1,2,3]
# person('傻狗1',100,*arr,city='傻狗2',job='傻狗3')
# person('傻狗1',100,*arr,job='傻狗3')#命名关键字参数city具有默认值,调用时,可不传入city参数 #参数组合
#可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
# def person(name,age=100,*args,city,**kw):
# print(name,age,args,city,kw)
# arr = [1,2,3]
# extra = {'job1':'傻狗3','job2':'傻狗4'}
# person('傻狗1',200,*arr,city='傻狗2',**extra) # arr1 = ['傻狗1',200,1,2,3]
# extra1 = {'city':'傻狗2','job1':'傻狗3','job2':'傻狗4'}
# person(*arr1,**extra1)#对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的 def product(*args):
sum = 1
for num in args:
sum = num * sum
return sum
arr = 1,2,3,4,5,6
print(product(*arr)) #默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误。
#*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})。

Python基础(普通函数及参数)的更多相关文章

  1. python基础——匿名函数

    python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.  在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...

  2. python基础——返回函数

    python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.  我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...

  3. python基础——sorted()函数

    python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...

  4. python基础——filter函数

    python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...

  5. Python基础__函数

    本节将进入函数的介绍,函数是Python基础中最精彩的部分之一,接下来将对函数做详细介绍.函数 函数就是对代码进行一个封装.把实现某一功能的代码进行封装到一起.下次需要使用时不需要进行编写代码直接调用 ...

  6. python基础——匿名函数及递归函数

    python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...

  7. 八. Python基础(8)--函数

    八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x):     ' ...

  8. python基础之函数详解

    Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...

  9. Python入门篇-函数、参数及参数解构

    Python入门篇-函数.参数及参数解构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数概述 1>.函数的作用即分类 函数 数学定义:y=f(x) ,y是x的函数,x ...

  10. python3 速查参考- python基础 6 -> 函数编程之参数、变量、作用域、递归、匿名函数 lambda

    函数基础 1. 速查笔记 #-- 函数相关的语句和表达式 myfunc('spam') # 函数调用 def myfunc(): # 函数定义 return None # 函数返回值 global a ...

随机推荐

  1. 踩坑系列《十二》解决连接云服务器的redis失败

    在本地连接服务器redis的时候,发现连接失败,这是因为服务器上的redis开启保护模式运行,该模式下是无法进行远程连接的.只需要修改redis目录下的redis.conf文件,找到 protecte ...

  2. Mac里存储空间不足,该怎么删垃圾数据?

    说明:在mac设备运行一段时间后,电脑空间很小了,对于开发者来说,清清Xcode缓存,腾出几十G的空间还是有可能的.在升级Xcode适配新系统.新手机也是得给电脑减减压. 一.Xcode缓存文件(co ...

  3. feign的一个注解居然隐藏这么多知识!

    引言 最近由于业务的需要,需要接入下阿里云的一个接口,打开文档看了看这个接口看下来还是比简单的目测个把小时就可以搞定,但是接入的过程还是比较坎坷的.首先我看了看他给的示例,首先把阿里云文档推荐的dem ...

  4. 基于Hexo+Github Pages搭建的博客

    概念 Github Pages可以被认为是用户编写的.托管在github上的静态网页.使用Github Pages可以为你提供一个免费的服务器,免去了自己搭建服务器和写数据库的麻烦.此外还可以绑定自己 ...

  5. MySQL的详细讲解

    目录 Mysql的架构与历史 MySQL的逻辑架构 更新中---- Mysql的架构与历史 MySQL的逻辑架构 第二层的架构是所有的跨引擎的功能实现的地方,例如:存储,触发器,视图等. 第三层半酣了 ...

  6. ArrayList和LinkedList、及Vector对比分析

    ArrayList和LinkedList 底层结构 两者的差别主要来自于底层的数据结构不同,ArrayList是基于数组实现的,LinkedList是基于双链表实现的. 接口实现 LinkedList ...

  7. 工作3年的Java程序员,轻松拿到阿里P6Offer,只因为他搞明白了Redis这几个问题!!

    Redis中的多路复用模型 Redis6用到了多线程?那多线程应用在哪些地方,引入多线程后,又改如何保证线程安全性呢? 同时,如何在性能和线程安全性方面做好平衡? 关于Redis的单线程模型 在Red ...

  8. WeakMap与Map,使用WeakMap实现深拷贝循环引用问题

    1.Map可以使用任意类型的key值,不限字符串,对象等. 2.WeakMap只能使用对象作为key值,是弱引用,当从WeakMap中移除时,会自动垃圾回收 3.Object只能用基本类型作为key值 ...

  9. 【c++ Prime 学习笔记】第1章 开始

    1.1 编写一个简单的程序 int main() { return 0; } 函数 包含4部分: 返回类型(return type) 函数名(function name) 形参列表(parameter ...

  10. 欧姆龙plc通讯协议格式

    欧姆龙CPM1A型plc与上位计算机通信的顺序是上位机先发出命令信息给PLC,PLC返回响应信息给上位 机.每次通信发送/接受的一组数据称为一"帧".帧由少于131个字符的数据构成 ...