您现在的位置是:主页 > news > wordpress无法登陆/北京推广优化公司

wordpress无法登陆/北京推广优化公司

admin2025/4/28 7:47:59news

简介wordpress无法登陆,北京推广优化公司,驻马店哪里做网站,用毛做简单的网站python函数与模块化编程 函数基本使用 例:计算C n!/m!(n-m) 分析:将求阶乘的功能代码封装起来从而得到一个函数,每次求阶乘时,只需通过修改参数即可调用函数。 函数参数传递: def fact(a):xxxreturn a c fact(n)…

wordpress无法登陆,北京推广优化公司,驻马店哪里做网站,用毛做简单的网站python函数与模块化编程 函数基本使用 例:计算C n!/m!(n-m) 分析:将求阶乘的功能代码封装起来从而得到一个函数,每次求阶乘时,只需通过修改参数即可调用函数。 函数参数传递: def fact(a):xxxreturn a c fact(n)…

python函数与模块化编程

函数基本使用

例:计算C = n!/m!(n-m)
分析:将求阶乘的功能代码封装起来从而得到一个函数,每次求阶乘时,只需通过修改参数即可调用函数。

函数参数传递:

def fact(a):xxxreturn a
c = fact(n)

定义时形参为a:fact(a),调用时实参为n:fact(n),这个过程就是将实参n的值传递给形参a。Python中函数支持以多种方式传递参数,包括位置传递、关键字传递、默认值传递、包裹传递、解包裹传递及混合传递。
函数返回:return语句可以同时将0个、1个或多个函数运算后得到的结果返回给函数调用处的变量。当存在多个返回值时,会形成一个元组。

def Mult(n):s = 0m = 1for i in range(1, n + 1):s += im = i * mreturn s, mSum, Mul = Mult(5)
print('累加和:{},阶乘积:{}'.format(Sum, Mul))
T = Mult(6)
print(type(T))

结构:

累加和:15,阶乘积:120
<class 'tuple'>

函数可以没有返回值,即没有return语句。如果没有return体语句,则会在函数体语句运行完成后退出函数。

变量作用域

根据变量作用域的不同,可以将变量分为两类:全局变量和局部变量

  • 全局变量是指在函数之外定义的变量,一般没有缩进,在程序执行的全过程有效。
  • 局部变量是指在函数内部定义的变量,仅在函数内部有效,一旦退出函数,变量就不再有效。
    global在函数体内定义全局变量:由于在函数体中使用global关键字声明的变量n是全局变量,变量n在主程序和函数体中使用的是同一个内存空间。故而在调用函数时会改变内存空间中的值.
def fun(a,b):global nn = a * breturn a+b

注:,对于列表类型,函数可以直接使用全局列表,而不需要采用global进行声明。
当列表被方括号([ ])赋值时,列表就会被真实地创建,否则就是对之前创建出来的列表进行引用,而普通的数据类型变量的赋值却没有创建和引用的区分。在函数体中,虽然没有使用global声明的列表变量ls,但是出现ls.append(a∗b)语句时,仅仅是对列表ls进行引用。而函数体中没有创建过这个名称的列表,fun()函数就会进一步寻找全局内存空间,当在全局内存空间找到变量ls后,则会自动关联全局ls列表,并对其内容进行修改。
总结一下Python函数对变量的作用要遵守的原则:

  1. 简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用。函数退出后,变量就会被释放,而同名的全局变量不受函数调用影响;
  2. 简单数据类型变量在使用global保留字声明后,作为全局变量使用,函数退出后,该变量仍被保留,且数值被函数改变;
  3. 对于组合数据类型的全局变量,如果在函数内部没有被真实地创建同名变量,则函数内部可以直接使用并修改全局变量的值;
  4. 如果函数内部真实地创建了组合数据类型变量,无论是否与全局变量同名,函数仅对内部的局部变量进行操作,函数退出后局部变量被释放,而全局变量的值不受函数影响。

匿名函数

Python中使用关键字lambda来定义匿名函数
与普通函数的区别:
(1)普通函数在定义时有名称,而lambda函数没有。
(2)普通函数的函数体中可以包含多条语句,而lambda函数只能是一个表达式。
(3)普通函数可以实现比较复杂的功能,而lambda函数功能简单。
(4)普通函数能被其他程序调用,而lambda函数不能被其他程序调用,经常用一个变量来保存它,以便后期可以随时使用这个函数

当匿名函数用变量来保存时,这个变量可以作为匿名函数的临时名称来调用。

f  = lambda x,y :x+y
f(10,20)
# 30
temp = lambda x: pow(x,2)
temp(10)
# 100

lambda函数经常会用在多维列表的排序中。如对二维列表按第二列排序分别升序、降序排序:

ls = [['a',100],['b',70],['c',50],['d',10]]
ls.sort(key = lambda x:x[1])

函数应用

例:日历的输出。通过输出年份和月份,显示出指定月份的日历。

# 判断闰年
def leap_year(year):if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:return Trueelse:return Falsedef month_days(year, month):if month == 2:if leap_year(year):return 29else:return 28elif month in [1, 3, 5, 7, 8, 10, 12]:return 31else:return 30# 获取从当前年到1990总天数
def total_days(year, month):days = 0for i in range(1990, year):if leap_year(i):days += 366else:days += 365for i in range(1, month):days += month_days(year, i)return days# 主程序
if __name__ == '__main__':year = 2018month = 10print(total_days(year, month))print('\t\t{}年{}月份日历'.format(year, month))print('Sun\t Mon\t Tues\t Wed\t Thu\t Fri\t Sat')print('------------------------------------------------------------')count = 0# 当前月份一号星期几,将前面星期空出来for i in range((total_days(year, month) + 1) % 7):print(end='\t')count += 1# 按星期几位置输出每个月天数for i in range(1, month_days(year, month) + 1):print(i, end='\t')count += 1if count % 7 == 0:print()

结果

  201810月份日历
Sun      Mon     Tues    Wed     Thu     Fri     Sat
------------------------------------------------------------1       2       3       4       5       6
7       8       9       10      11      12      13
14      15      16      17      18      19      20
21      22      23      24      25      26      27
28      29      30      31

代码复用与模块化编程

  1. 当代编程语言从代码层面采用函数和对象两种抽象方式,分别对应面向过程面向对象编程思想。
  • 面向过程是一种以过程᧿述为主要方法的编程方式,它要求程序员列出解决问题所需要的步骤,然后用函数将这些步骤一步一步地实现,使用时依次建立并调用函数或编写语句即可。
  • 所有面向对象编程能实现的功能采用面向过程同样能实现。
  1. 无论面向过程还是面向对象编程,程序合理划分功能模块并基于模块设计程序是一种常用的方法,称为模块化程序设计
    模块化设计是使用函数和对象设计程序的思考方法,以功能块为基本单位,一般有两个基本要求:
    (1)高内聚。尽可能地合理划分功能块,功能块内部耦合紧密。
    (2)低耦合。模块间尽可能简单,功能块之间耦合度低。
    模块化编程可采用以下步骤进行:
    (1)分析问题,明确需要解决的任务。
    (2)对任务进行逐步分解和细化,分成若干个子任务,每个子任务只完成部分完整功能,并且可以通过函数实现。
    (3)确定模块(函数)之间的调用关系。
    (4)优化模块之间的调用关系。
    (5)在主函数中进行调用实现。