当前位置: 首页 > news >正文

沈阳建站免费模板公司画册设计

沈阳建站免费模板,公司画册设计,创造与魔法官网站_一起做喜欢的事,免费的php网站模板目录 1.函数相关术语 2.函数类型分类 3.栈 4.位置参数和关键字参数 5.默认参数 6.局部变量和全局变量 7.返回多个值 8.怀孕函数 9.匿名函数 10.可传递任意个数实参的函数 11.函数地址与函数接口 12.内置函数修改与函数包装 1.函数相关术语 函数的基本概念有函数头…

目录

1.函数相关术语

2.函数类型分类

3.栈

4.位置参数和关键字参数

5.默认参数

6.局部变量和全局变量

7.返回多个值

8.怀孕函数

9.匿名函数

10.可传递任意个数实参的函数

11.函数地址与函数接口

12.内置函数修改与函数包装


1.函数相关术语

函数的基本概念有函数头,函数名,形参和实参,函数体,如下图所示

  • 参数是可选的,也就是说函数可以不包含参数,比如 def main():
  • 使用 return result 返回语句来返回一个值,函数为带返回值的函数。
  • 不使用 return 语句,函数为不带返回值的函数。不用 return 的函数,python 默认函数末尾加上了一个 return None,就是说返回了一个 None,空值。

2.函数类型分类

带参数,有返回值的函数
def myfunc(a, b):result = 0for i in range(a, b + 1):result += ireturn result
不带参数,无返回值的函数
def main():print("月满则亏")print("水满则溢")print("花满则衰")print("爱满则痴")main()  # 执行 main()
带参数,无返回值的函数
def nprint(n):for i in range(n):print("xxxxxx")print(nprint(2))

3.栈

栈是在函数调用时产生的一个内存区域,用来存储函数的参数和局部变量的激活记录。
当调用一个函数时,这个函数的参数和局部变量的激活记录被压入栈。
当这个函数执行完毕,这些激活记录将会被从栈中删除。

示例代码

def func(Data1, Data2):Data3 = Data1 * Data2return Data3ret = func(1, 2)

对于语句ret = func(1, 2),func在调用时会产生一个栈,实参传递给形参,以及函数体内部的变量激活记录都会逐步记录在栈中(称为"压入栈"),函数调用完毕,这些记录会逐步从栈中清除出去("出栈")。

栈的特点:"后进先出"。就是最后进来的激活记录先被弹出堆栈。

4.位置参数和关键字参数

调用函数时,实参的值传递给形参,这个过程叫做值传递。值传递有多种方式,比如按默认位置,或者使用关键字参数。比如下面这个例子中f函数有3个关键字参数:x,y,z。

def f(x, y, z):return (x + y) / z# 使用位置参数调用函数
print(f(1, 2, 3))  # 1.0# 使用关键字参数调用函数
print(f(z=2, y=3, x=5))  # 4.0# 同时使用位置参数和关键字参数
print(f(7, z=3, y=2))  # 3.0

注意:调用函数时,位置参数在左边,关键字参数在右边。

5.默认参数

函数定义时, 形参如果带有关键字,表示当实参不赋值时,该变量具有默认值。
而当实参有赋值时,使用实参的赋值,而不是用默认值。
# 非默认值参数必须在默认值参数之前
def f(x, y=1, z=2):return x + y + zprint(f(1, 1, 1))  # 3
print(f(y=1, x=2, z=3))  # 6
print(f(1, z=3))  # 5

6.局部变量和全局变量

在函数内部定义的变量被称为局部变量。
在函数之外创建的变量被称为全局变量。
使用 global variable 语句将局部变量变为全局变量。
示例代码
x = 1
y = 1
z = 1def f(x):global yx = 2y = 2z = 2f(100)
print(x)  # 1
print(y)  # 2
print(z)  # 1

在以上代码中:

  • 一开始定义了x和y,它们是全局变量。
  • 然后定义了一个函数f,形参有x,注意这里的x为函数的形参名,跟前面那个全局变量x不是同一个
  • 函数体内部先使用了global y语句,它的作用是函数内部等会如果有y的调用,则y调用的是全局变量那个y。
  • x = 2语句是一个赋值语句,注意这条赋值语句的x不是全局变量那个x,是形参变量x,因此全局变量那个x的值不会发生改变,仍为1
  • y = 2语句:由于global y的作用,这里的y是全局变量的那个y,因此全局变量y的值会变成2
  • z = 2语句:由于没有global z语句,这里的z是函数内部产生的局部变量,因此这里的赋值语句不会对全局变量那个z造成影响。

7.返回多个值

python 函数允许返回多个值。
函数多个数本质上是以元组的形式在传递值。
def sort(n1, n2):if n1 < n2:return n1, n2return n2, n1print(sort(2, 3))  # (2, 3)
a, b = sort(3, 2)print(a)  # 2
print(b)  # 3def func(num1, num2):return num1 + num2, num1 - num2x = func(2, 3)
print(type(x))  # <class 'tuple'>

8.怀孕函数

怀孕函数就是函数内部又定义了一个函数。

python 函数很特殊,可以无限嵌套。
def Test():def TestX():print("hello world")for i in range(3):TestX()Test()

9.匿名函数

匿名函数就是函数的简洁表达,使用关键字 lambda 实现。

# 例子1
myfunc = lambda a, b: a + b
print(myfunc(2, 3))   # 5# 例子2(用来装逼)
ret = (lambda a, b: a * b)(4, 5)
print(ret)  # 20
(lambda data: print(data))("hello world")  # hello world

10.可传递任意个数实参的函数

在Python中,可以创建一个函数,它可以接收任意数量的实参。这通过使用星号表达式()实现。星号运算符有两种形式:单星号(*)和双星号(**)。

①单星号(*):将实参列表转换为元组。

def mysum(*data):print(type(data))   # <class 'tuple'>ret = 0for x in data:ret += xreturn retprint(mysum(1, 2))  # 3
print(mysum(1, 2, 5, 7))  # 15

②双星号(**):将字典转换为关键字参数。

def mysum(**data):print(type(data))   #  <class 'dict'>ret = 0for key in data:ret += data[key]print(key, data[key])return retprint(mysum(a=2, b=2, c=5, d=7))  # 这里用等号,等号左边为关键字,右边为值print(mysum(x=2, y=3))  # 这里用等号,等号左边为关键字,右边为值

③同时使用单星号(*)和双星号(**):函数可以接收任意数量的实参,并且可以是以上两种类型。

def print_args_kwargs(*args, **kwargs):print(args)print(kwargs)print_args_kwargs(1, 2, 3, a=1, b=2, c=3)
# 输出: (1, 2, 3) {'a': 1, 'b': 2, 'c': 3}

11.函数地址与函数接口

函数的本质是一个地址,可函数名赋值来实现相同功能

def myadd(num1, num2):return num1 + num2print(id(myadd))  # 2363817237224
print(type(myadd))  # <class 'function'>go = myadd  # 注意软件规范不允许这样赋值,不然容易出问题
print(id(go), id(myadd))  # id 会相同
print(type(go), type(myadd))  # 类型都是函数ret = go(1, 2)
print(ret)  # 3

函数名赋值实现函数的调用和定义的分离,实现函数接口,搭建框架。

# 函数的定义
def add(x, y):return x + y - 1# 函数的定义
def minus(x, y):return x - y + 10# 函数调用框架
def work(func_name, num1, num2):value = func_name(num1, num2)print(value)for i in range(value):print("hello world")return value + 1# 函数调用
work(add, 1, 2)# 函数调用
work(minus, 3, 4)

运行结果

2
hello world
hello world
9
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world

12.内置函数修改与函数包装

修改内置函数

import osdef myprint(mystr):os.system("echo ---------------")if mystr.find("python is handsome.") != -1:os.system("echo " + mystr)else:os.system("echo " + "python is handsome!")os.system("echo " + mystr)print = myprint  # 切换函数的地址
print("hello world")
print("Full love leads to madness")

运行结果

---------------
python is handsome!
hello world
---------------
python is handsome!
Full love leads to madness
函数包装
  • 加密 or 保护费
  • 还可以给函数的使用加密
  • 每次调用都要输入密码才行

示例代码

import os# 备份原来的函数地址
backossystem = os.system# 等价的调用
# backossystem("notepad")# 需要收费的系统
def system_check(mystr):if mystr.find("A") != -1:backossystem(mystr)else:print("请开通会员否则 " + mystr + " 无法执行")# 修改内置函数地址
os.system = system_check
os.system("echo hello world")

运行结果

请开通会员否则 echo hello world 无法执行

end

http://www.yayakq.cn/news/519882/

相关文章:

  • 厦门网站设计多少钱关键词代发排名首页
  • 免费建设淘客网站免费简历制作app
  • 泰安千橙网络汕头seo网站优化
  • 外贸推广建站公司软文台
  • 爱站长seo技术培训唐山
  • 大连市建设工程老网站江苏省和城乡建设门户网站
  • 长春网站建设哪里好中国建设银行官网站电话号码
  • 网站上传工具有什么青岐网站建设平台
  • wordpress网站在哪里修改外包网络推广公司推广网站
  • 漳州网站建设求职简历t型布局网站实例
  • 服务器 网站建设 过程普通网站建设
  • 赣县城乡规划建设局网站长宁做网站公司
  • 青岛网站产品图片设计网站你懂我意思正能量晚上在线观看不用下载免费魅族
  • php 网站301wordpress 插件设计
  • 网站源码安装步骤怎么设置网站标题
  • 民宿可以在哪些网站做推广网站建设人力资源分配
  • 企事业网站建设wordpress首页
  • 做室内设计人喜欢的网站做网站比较好的
  • 建筑设计门户网站国外js网站
  • 舆情网站网址增城网站开发
  • 便宜的网站设计企业智能营销
  • 网站建设时间安排表做网站审批号必须要
  • 五月色做受网站wordpress360cdn
  • 企业网站缺点ui是什么意思
  • 免费教育网站建设最好的个人网站建设
  • 网站开发我能做什么太原晋民网站建设公司
  • 贵州建网站html网站建设方案
  • 网店推广网站网站建设邮箱
  • 营口网站制作公司制作网站可以赚钱吗
  • 淘宝做的网站优化网页编辑与网站编辑