摘要:函数的定义范例总结无参函数名快注释函数体定义函数,并不会执行函数体里面的内容调用函数的过程函数里面嵌套函数调用外层函数时,内层函数不会执行变量参数定义函数时的变量,称做形参,可以任意命名真实的数据信息,调用函数时传递的参数,称为实参是形参是
函数的定义
范例
def print(self, *args, sep=" ", end="n", file=None):
总结
无参
def 函数名():
</>复制代码
快注释
函数体
定义函数,并不会执行函数体里面的内容
</>复制代码
def hello():
print("hello")
print("sheenstar")
调用函数的过程
</>复制代码
hello()
函数里面嵌套函数
</>复制代码
def sheen():
print("happy is ...")
def star():
print("sheen")
调用外层函数时,内层函数不会执行
</>复制代码
sheen()
happy is ...
变量参数
定义函数时的变量,称做形参,可以任意命名
真实的数据信息,调用函数时传递的参数,称为实参
</>复制代码
def game(guess): #guess是形参
print(guess>2)
game(3) #3是实参
number = 1
game(number) #number是实参
形参
形参可分为:位置参数,默认参数,可变参数,关键字参数
位置参数
形参必须和实参个数一致,按照位置传递参数
</>复制代码
def getinfo(name, age):
print(name, age)
getinfo("sheen", 17)
getinfo(age=13, name="star")
sheen 17
star 13
默认参数
实参和形参的个数可以不一致
</>复制代码
def mypow(x, y=2):
"""
求x的y次方,y默认值为2
:param x: value
:param y:
:return:
"""
print(x ** y)
mypow(2)
mypow(2, 3)
4
8
可变参数
</>复制代码
# 可变参数
def mysum(*args):
"""
用户可以传入任意个数值,计算数值的和
注意:*args是可变参数;
args是元组数据类型
args可以改称其他,因为是形参
mysum(1,2,45,787,...)
:return:
"""
print(args) # 元组
sum = 0
for item in args:
sum += item
print(sum)
mysum(1, 2, 3, 4, 5, 6, 7)
28
关键字参数
</>复制代码
**kwargs是一个字典,可以传递任意多的key-value对
</>复制代码
def getstinfo(name, age, **kwargs):
print(name, age)
print(kwargs)
getstinfo("sheen", 19, hobbies=["code", "flower"], gender="female")
sheen 19
{"hobbies": ["code", "flower"], "gender": "female"}
动态添加函数成员
</>复制代码
def fun():
print(fun.x)
</>复制代码
fun() #报错,AttributeError: "function" object has no attribute "x"
动态添加
</>复制代码
fun.x = 3
fun()
3
动态删除
</>复制代码
fun.x = 3
del fun.x
fun() #报错,AttributeError: "function" object has no attribute "x"
函数返回值
返回值:函数运算的结果,还需要进一步操作时,给一个返回值"return"
"return"用来返回函数执行结果,如果没有返回,默认为‘none’
遇到"return",函数执行结束,后面代码不会执行,(yield)
python可以间接返回多个值;原理:返回一个元组,再对元组进行解包
</>复制代码
def myfun(x,y):
return x+y,x-y,x*y,x**y
m=myfun(3,2)
print(m)
(5, 1, 6, 9)
变量的作用域
变量:局部变量,全局变量
局部变量:在函数体内定义的变量,只在函数内有意义,函数执行结束后,变量不存在
不可变数据类型:函数内部改变,不会影响外部变量值
可变数据类型:函数内部改变,会影响外部变量值
</>复制代码
a= 1
print("outsides",id(a))
def fun():
a=5 #局部变量
print("besides:",id(a))
fun()
print(a)
outsides 9326560
besides: 9326688
1
</>复制代码
# 全局变量:global
a= 1
print("outsides",id(a))
def fun():
global a #a为全局变量
a=5
print("besides:",id(a))
fun()
print(a)
print(id(a))
outsides 9326560
besides: 9326688
5
9326688
函数补充
给变量和返回值都设定默认数据类型,不是此类型,函数仍能执行
</>复制代码
def myadd(x:int,y:int) -> int:
return x+y
print(myadd(1.0,8))
9.0
参数数据类型的判断
isinstance()
</>复制代码
>>> isinstance(1,int)
True
>>> isinstance([1,2],int)
False
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/42223.html
摘要:高阶函数实参是一个函数名函数的返回值是一个函数传递的参数包含函数名。内置高阶函数函数函数接收两个参数一个是函数一个是序列将传入的函数依次作用到序列的每个元素并把结果作为新的返回。 高阶函数 实参是一个函数名 函数的返回值是一个函数 print(abs(-10)) f = abs print(f(-10)) #传递的参数包含函数名。 def myfun(x,y,fun): ...
迭代 可以通过 for 循环来遍历 list 或 tuple,这种遍历我们称为迭代(Iteration)只要是可迭代对象,都可以迭代,比如字典默认情况下,字典迭代的是key值如何让判断一个类型是否可迭代 from collections import Iterable #导入collections模块的Iterable类型判断方法 print(isinstance({abc:1},Itera...
摘要:和列表里提供了方法,其他数据类型不能用可以对任何可迭代对象排序方法支持原地排序,变量排序后,变量本身改变方法返回一个新的列表,并不改变原变量的内容不改变原有列表次序默认和方法由小到大排序,时,从大到小排序字典排序商品名称,数 li.sort()和sorted() 列表里提供了sort方法,其他数据类型不能用 sorted可以对任何可迭代对象排序 sort方法支持原地排序,变量排序后...
摘要:什么是包为了组织好模块,会将多个模块分为包。处理包也是相当方便的。简单来说,包就是文件夹,但该文件夹下必须存在文件。最简单的情况下,只需要一个空的文件即可。当然它也可以执行包的初始化代码包底下也能包含包,这和文件夹一样,还是比较好理解的。 什么是包? 为了组织好模块,会将多个模块分为包。Python 处理包也是相当方便的。简单来说,包就是文件夹,但该文件夹下必须存在 __init__....
什么是装饰器? 装饰器就是用来装饰函数。 想要增强原有函数的功能 但不希望修改原有函数的定义 在代码运行期间动态增加功能的方式 函数嵌套函数 调用方式:原函数 = 外层函数(原函数名)原函数 def desc(fun): def add_info(): print(happy today) fun() print(westos_linux...
阅读 3582·2021-09-10 10:51
阅读 2580·2021-09-07 10:26
阅读 2539·2021-09-03 10:41
阅读 858·2019-08-30 15:56
阅读 2947·2019-08-30 14:16
阅读 3556·2019-08-30 13:53
阅读 2159·2019-08-26 13:48
阅读 1961·2019-08-26 13:37