二次函数python代码示例,Python函数笔记

  二次函数python代码示例,Python函数笔记

  本文主要详细介绍Python的函数基础,使用函数参数和递归函数。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  

目录
1.函数参数2。递归函数摘要

  

1.函数参数

  # 1.位置参数:调用函数时,传入的值需要按照位置顺序传入。

  #示例:求x的n次方

  xpown (x,n) : #传入的值是按照x,n的位置顺序传入的。

  s=1

  而n 0:

  n=n - 1

  s=s * x

  返回s

  print( 2的五次方值为:,xPowN(2,5))

  print( 5的二次方值为:,xPowN(5,2))

  #结果输出:

  # 2的5次方值是:32

  # 5的2次方的值是:25

  # 2.默认参数

  #示例:求x的n次方

  def xPowN(x,n=2):

  s=1

  而n 0:

  n=n - 1

  s=s * x

  返回s

  print( 2的五次方的值为:,xPowN(2,5)) #当传入一个新的n值时,新值用于计算;如果没有,则为默认值。

  print的值( 5的二次方为,xPowN(5)) # n默认为2。

  打印(-)

  打印(-)

  #设置默认参数的注意事项:

  # 1.必选参数在前,缺省参数在后;

  # 2.当一个函数有多个参数时,把变化大的放在前面,变化小的放在后面;

  #变化小的参数可以作为默认参数;

  # 3.使用默认参数可以降低调用函数的难度;

  # 4.定义默认参数时,默认参数必须指向不可变的对象。如果是可变对象,就会有问题,比如:list

  #示例:学生信息注册

  def studentInfo(姓名,性别,年龄,城市=深圳):

  打印(学生姓名:,姓名)

  打印(学生的性别是:,性别)

  打印(学生的年龄是:,年龄)

  打印(学生来自的城市是:,城市)

  打印(同学1的信息如下:)

  打印(-)

  StudentInfo(Willard , Male ,18) #使用默认参数深圳

  打印( *************************** )

  打印(同学2的信息如下:)

  打印(-)

  StudentInfo(ChenJD , female ,18,茂名)#传入一个新参数茂名而不是深圳。

  #结果输出:

  2的5次方的值是:32。

  5的2次方的值是:25。

  -

  -

  1的信息如下:

  -

  这个学生的名字叫威拉德。

  学生的性别是:男。

  学生的年龄是:18岁

  学生来自的城市是:深圳。

  *****************************

  学生2的信息如下:

  -

  这个学生的名字是:ChenJD

  学生的性别是:女。

  学生的年龄是:18岁

  学生们来自的城市是茂名。

  # 3.可变参数:传入的参数个数是可变的,范围从0,1,2到任意数。

  #当参数以传统方式传入时,它们可以作为列表或元组传入。

  #示例(传统方式):

  def sumOfN(intNumbers):

  总和=0

  对于整数:中的n

  总和=总和

  返回总和

  Print(前100项的累积和为:,sumOfN(range(101)))

  Print(前50项的累积和为:,sumOfN(range(51)))

  打印

  ("任意项累加和为:",sumOfN([1,2,5,6,7,8,9,10]))

  print("任意项累加和为:",sumOfN((1,2,3,4,5,7,8,9,12)))

  print("---------------------------------------------------------")

  # 可变参数:在参数前添加*号

  def sumOfN(*intNumbers):

   sum = 0

   for n in intNumbers:

   sum = sum + n

   return sum

  print("任意项累加和为:",sumOfN(1,2,3,4,6,7,8,9))

  print("任意项累加和为:",sumOfN(1,2,4))

  print("任意项累加和为:",sumOfN(3,4,5,6,7))

  print("---------------------------------------------------------")

  # 把list或tuple作为可变参数传入

  def sumOfN(*intNumbers):

   sum = 0

   for n in intNumbers:

   sum = sum + n

   return sum

  # 已经有list,*nums表示把nums的所有元素作为可变参数传入

  nums = [1,2,3,5]

  print("传入一个list:",sumOfN(*nums))

  

  

# 结果输出:
前100项累加和为: 5050
前50项累加和为: 1275
任意项累加和为: 48
任意项累加和为: 51
---------------------------------------------------------
任意项累加和为: 40
任意项累加和为: 7
任意项累加和为: 25
---------------------------------------------------------
传入一个list: 11

  

  

# 4.关键字参数

  # 可变参数允许传入任意个参数,这些可变参数在函数调用时自动组装为一个tuple;

  # 关键字参数允许传入任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict;

  def personInfo(name,age,**kw):

   print("name:",name,"age:",age,"other:",kw)

  print("Willard个人信息:")

  personInfo("Willard",18)

  print("------------------------------------------------------------------")

  print("Willard更详细的个人信息:")

  personInfo("Willard",18,gender = "男",job = "Enginner")

  print("------------------------------------------------------------------")

  print("ChenJD个人信息:")

  personInfo("ChenJD",18,gender = "女")

  print("------------------------------------------------------------------")

  # 关键字参数:可以扩展函数的功能

  # Eg:用户注册功能,用户名和年龄是必填信息,其他信息均为可选

  # 可以先组装出dict,然后把dict转换为关键字参数传入

  extraInfo = {"gender":"Man","city":"Shenzhen","job":"Engineer"}

  print("hackerLuo个人信息如下:")

  personInfo("hackerLuo",18,gender = extraInfo["gender"],job = extraInfo["job"])

  print("------------------------------------------------------------------")

  # 使用简化写法

  print("简化写法传入hackerLuo个人信息:")

  personInfo("hackerLuo",18,**extraInfo)

  

  

# 结果输出:
Willard个人信息:
name: Willard age: 18 other: {}
------------------------------------------------------------------
Willard更详细的个人信息:
name: Willard age: 18 other: {'gender': '男', 'job': 'Enginner'}
------------------------------------------------------------------
ChenJD个人信息:
name: ChenJD age: 18 other: {'gender': '女'}
------------------------------------------------------------------
hackerLuo个人信息如下:
name: hackerLuo age: 18 other: {'gender': 'Man', 'job': 'Engineer'}
------------------------------------------------------------------
简化写法传入hackerLuo个人信息:
name: hackerLuo age: 18 other: {'gender': 'Man', 'city': 'Shenzhen', 'job': 'Engineer'}

  

  

# 5.命名关键字参数

  # 函数调用者可以传入任意不受限制的关键字参数;

  # 传入了哪些参数,需要在函数内通过kw检查;

  def personInfo(name,age,**kw):

   if "city" in kw:

   pass

   if "job" in kw:

   pass

   print("name:",name,"age:",age,"other:",kw)

  # 如果要限制关键字参数的名字,可以用命名关键字参数

  # 只接收gender,job作为关键字参数

  # 命名关键字参数需要*作为分隔符,*后面的参数视为命名关键字参数

  # 命名关键字参数必须传入参数名

  def personInfo(name,age,*,gender,job):

   print(name,age,gender,job)

  # 调用方式:

  print("命名关键字参数调用!")

  personInfo("Willard",18,gender = "男",job = "Engineer")

  print("------------------------------------------------------------------")

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

  def personInfo(name,age,*args,gender,job):

   print(name,age,args,gender,job)

  # 命名关键字参数的缺省值

  def personInfo(name,age,*,gender,job = "Engineer"):

   print(name,age,gender,job)

  print("命名关键字参数有缺省值!")

  personInfo("Willard",18,gender = "男")

  

  

# 结果输出:
命名关键字参数调用!
Willard 18 男 Engineer
------------------------------------------------------------------
命名关键字参数有缺省值!
Willard 18 男 Engineer

  

  

# 6.参数组合

  # 常用参数:必选参数、默认参数、可变参数、关键字参数、命名关键字参数

  # 参数定义顺序:必选参数、默认参数、可变参数、命名关键字参数、关键字参数

  def egFunc1(name,age,gender = "男",*args,**kw):

   print("name:",name,"age:",age,"gender:",gender,"args:",args,"kw:",kw)

  def egFunc2(name,gender = "男",*,job,**kw):

   print("name:",name,"gender:",gender,"job:",job,"kw:",kw)

  # 调用

  print("egFunc1传入name和age参数:")

  egFunc1("Willard",18)

  print("------------------------------------------------------------------")

  print("egFunc1传入name,age,gender参数:")

  egFunc1("ChenJD",18,"女")

  print("------------------------------------------------------------------")

  print("egFunc1传入name,age,gender,args参数:")

  egFunc1("hackerLuo",18,"男",170,60)

  print("------------------------------------------------------------------")

  print("egFunc1传入name,age,gender,args,kw参数:")

  egFunc1("Willard",18,"男",170,60,job = "Engineer")

  print("------------------------------------------------------------------")

  print("egFunc2传入name,gender,job,kw参数:")

  egFunc2("Willard",job = "Engineer",ext = None)

  print("------------------------------------------------------------------")

  print("egFunc1通过tuple和dict传入参数:")

  args = ("Willard",18,"男",170,60)

  kw = {"job":"Engineer"}

  egFunc1(*args,**kw)

  # Tips:

  # 1.默认参数一定要用不可变对象,如果是可变对象,程序运行时出现逻辑错误;

  # 2.*args是可变参数,args接收的是一个tuple;

  # 3.**kw是关键字参数,kw接收的是一个dict;

  # 4.可变参数可以直接传入:func(1,2,3,4),也可以先组装list或tuple,

  # 通过*args传入:func(*(1,2,3,4));

  # 5.关键字参数可以直接传入:func(a = 1,b = 2),也可以先组装dict,

  # 通过**kw传入:func(**{"a":1,"b":2});

  # 6.命名关键字参数在没有可变参数的情况下需要写分隔符*

  

  

# 结果输出:
egFunc1传入name和age参数:
name: Willard age: 18 gender: 男 args: () kw: {}
------------------------------------------------------------------
egFunc1传入name,age,gender参数:
name: ChenJD age: 18 gender: 女 args: () kw: {}
------------------------------------------------------------------
egFunc1传入name,age,gender,args参数:
name: hackerLuo age: 18 gender: 男 args: (170, 60) kw: {}
------------------------------------------------------------------
egFunc1传入name,age,gender,args,kw参数:
name: Willard age: 18 gender: 男 args: (170, 60) kw: {'job': 'Engineer'}
------------------------------------------------------------------
egFunc2传入name,gender,job,kw参数:
name: Willard gender: 男 job: Engineer kw: {'ext': None}
------------------------------------------------------------------
egFunc1通过tuple和dict传入参数:
name: Willard age: 18 gender: 男 args: (170, 60) kw: {'job': 'Engineer'}

  

  

  

2.递归函数

  

# 在函数内部,可以调用其他函数,亦可以调用函数本身,则为递归函数

  # 计算阶乘:n!=1×2×3...×n

  def fact(n):

   if n == 1:

   return 1

   return n * fact(n - 1)

  print("5的阶乘为:",fact(5))

  print("100的阶乘为:",fact(50))

  # print("10000的阶乘为:",fact(10000))

  # print("10000的阶乘为:",fact(10000)) # 栈溢出

  # 在计算机中,函数调用是通过栈数据结构实现,每进入一个函数调用,

  # 栈会加一层栈帧,当函数返回,栈减少一层栈帧,递归调用次数过多,会导致栈溢出;

  # 读者尝试fact(1000),fact(10000),可能fact(1000)就已经栈溢出,

  # 笔者测试fact(1000)还是可以正常输出的,fact(10000)栈溢出

  

  

# 结果输出:
5的阶乘为: 120
100的阶乘为: 30414093201713378043612608166064768844377641568960512000000000000

  

  

  

总结

  本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT软件开发工作室的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: