函数传参string_Python函数总结(1)

70d441a9740eedb8c7e78ba02b265297.gif

https://www.cnblogs.com/skywlj1106/p/10311634.html

博客园
一、函数的基本用法
1、概念:

函数是对程序逻辑进行结构化或是过程化的一种编程方法,其是组织好的,可重复使用的,用来实现单一,或者相同功能的代码段。

函数提高了应用点的模块性和代码的重复利用率

本质:函数是对功能的封装

形式参数:简称形参,本质是一个没有值的变量  实际参数:简称实参,本质是常量,变量或者表达式  传参:实参给形参赋值的过程

而实参的类型取决于形参的需要

2、函数定义:
def  函数名(参数1,参数2,参数3.。。。):          函数体          return 返回值

注:a、函数命名遵循标识符规则,做到见名知意,小驼峰命名法、

b、参数1,参数2,参数3.....形式参数,不同的参数之间使用逗号隔开,参数的数量没有限制,依据具体的需求决定参数的数量

c、函数体:被封装的功能

d、return:结束函数,将返回值返回给调用者,也可单独使用

e、返回值可为常量、变量、表达式

3、返回值

返回值:表示一个函数执行完毕之后得到的结果

注:对于return语句不带参数,则返回一个None

4、调用

函数的调用:实质就是函数入栈出栈的过程

即:函数的入栈:函数被调用;函数的出栈:函数被调用完毕

注:在函数调用的过程要注意避免出现死循环

5、变量的作用域

变量的作用域:指变量可以被访问的范围

作用域的划分:

L:(local)局部作用域

E:(Enclosing)函数作用域(闭包)

G:(Global)全局作用域

B:(Built-in)内置作用域

变量的查找规则(变量重名):

python中变量的作用域由大到小,依次为内建(built_in B) >全局(glbal G)> 函数的闭包外(enclosing E)> 局部(local L)

注:在变量重名情况下在函数内部访问变量时使用就近原则。

如果将全局变量的名字声明在一个函数体内的时候,全局变量的名字能被局部变量给覆盖掉,此时我们就需要使用global或者nonlocal来声明变量了。

  #1.变量不重名  num1 = 10    #全局作用域  def outer():      num2 = 20    #函数作用域      def inner():          num3 = 30  #局部作用域          print(num1,num2,num3)      return inner  f = outer()  f()  # global:全局的  # 全局变量  num1 = 4  def func1():     # 声明num1是全局变量的num1      global  num1      print(num1)   #4  num1 = 20  func1()  a = 10  def test():      global  a      a = a + 1      print(a)   #UnboundLocalError: local variable 'a' referenced before assignment  test()  # nonlocal:不是局部的  # nonlocal;前提条件:必须使用在闭包中  x = 0  # 全局作用域  def outer():      x = 1       # 函数作用域      def inner():         # 将一个局部作用域的变量声明为不是局部的,局部----》函数          nonlocal x          x = 2   #局部作用域          print("inner:",x)  #在外部函数中调用内部函数  nner()  print("outer:",x)  outer()  print("global:",x)
6、参数

1、参数的传递:

参数的传递有值传递和引用传递

值传递:传递不可变类型的数据,例:num、string、tuple等;在值传递时,形参的改变并不会影响实参

引用传递:传递可变类型的数据,例:list、dict、set等;形参的改变会影响实参的使用

在函数中参数传递的是对象的引用

#引用传递:传递列表或者字典时,如果改变引用的值,就修改了原始的对象
def check(l):          print(l)          print(id(l))          l.append([1, 23, 2, 3, 4])          return l  l = [1, 2, 3, 4]  print(check(l))  print(id(l))  '''  [1, 2, 3, 4]  2902500909320  [1, 2, 3, 4, [1, 23, 2, 3, 4]]  2902500909320  '''  #值传递:当传递不可变对象时,如果改变引用变量的值,只是创建了不同的对象,原始对象并没有改变。  def check(s):      print(s)      print(id(s))      s = "i am test"      print(id(s))      return s  s = "This is a test"  print(check(s))  print(s)  '''  This is a test  2418424029424  2418424029488  i am test  This is a test

2、参数的类型:

a、必须参数:必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

 def printme( str ):     "打印任何传入的字符串"      print str      return  #调用printme函数  printme()

b、关键字参数:允许实参的顺序和形参的顺序不一致,因为Python解释器会根据关键字参数的名称自动的匹配

def show2(name,age):      print("name:%s age:%d" % (name,age))  show2(name="jack",age=47)  # 注:关键字参数使用在实参列表中,不要求顺序保持一致  show2(age=36,name="fadj")  # 注:在实参列表中,可以不全部设置为关键字参数  show2("zhangsan",age=15)  # 注:关键字参数只能出现在实参列表的后面  def show3(a,b,c):      print(a,b,c)  show3(1,4,4)  show3(a=3,c=5,b=5)  show3(45,b=9,c=18)  #show3(a=45,9,18)  #SyntaxError: positional argument follows keyword argument

c、默认参数:调用函数的时候,如果没有传递参数,则使用默认值【default】

 #注意1:默认参数体现在形参列表中  def func3(name="abc",age=18):   print("name:%s age:%d" % (name, age))  #注意2:使用了默认参数,则可以选择不传参,使用的默认值,如果传参,则相当于给形参重新赋值  func3()  func3("jack",19)  #注意3:关键字参数和默认参数可以结合使用  func3(name="jack",age=19)  func3("jack",age=19)  #注意4:形参列表可以不全部设置为默认参数,只要吃部分设置,则默认参数出现在形参列表的后面  #报错:SyntaxError: non-default argument follows default argument  # def show4(name="abc",age):  #     print("name:%s age:%d" % (name, age))  # show4("bob",18)  print("hello")

d、不定长参数:可以处理比声明时更多的参数

#a.*,一般写法为*args  def text1(*num):      print(num)      for n in num:          print(n)  # *不定长参数被当做元组处理,num形参名其实就是元组名  text1(10)  text1(10,4,54,65,65,7)  # 可以传一个元组,但是,元组被当做一个整体全部传参  text1((54,4,64))  # 一般情况下,将不定长参数设置在形参列表的最后  def text2(*num3,num1,num2):      print(num1,num2,num3)  # 如果不定长参数出现在形参列表的前面或者中间,则可以借助于关键字参数传参  #text2(12,43,43)  text2(12,34,num1=35,num2=59)  # 在形参列表,不定长参数最好只出现一个  #错误演示  # def text3(*num3,num2,*num1):  #     print(num1,num2,num3)  # text3(43,53,num2=10,5,5,4)  #b.**,一般写法为**kwargs  def text4(**num3):   print(num3)  #注意1:**,被当做字典处理,传参的时候,需要以key=value的方式进行传参  text4(x=26,y=17)  #注意2:在形参列表中使用**,保证出现在后面  """  使用场景:单例设计模式  def text(*args,**kwargs):
总结:
a.必需参数使用最多,其次是不定长参数
b.关键字参数和默认参数最多使用在系统函数中
"""
7、匿名函数

lambda表达式:python中的匿名函数主要用来处理一些简单逻辑表达式的封装,使用lambda关键字

优点:不占用内存,提高代码的运行速度

一般格式为:

var = lambda args:表达式#例如:f = lambda x,y:x+y#该函数的调用结果为 冒号后的表达式所表达的结果print(f(1,2))

fb0a21d5e516a1012c3a03039cd07780.gif


每周项目:

每周1项目|(04)javaWeb聊天室

每周1项目|(03)java成绩管理系统

每周1项目|(02)网上书店项目

每周1项目|(01)网上商城项目

框架:

着手的第一个框架项目|SSM之MyBatis入门(上)

什么是SSM?

Asp.net

小程序出多端框架啦!!!!!

教学视频:

java开发集合

PHP全套第一、二套视频和资料

python视频和资料+Python全套(内有爬虫)+ Python高级编程技巧

24课时教程+2大实战项目,拿下Bootstrap,冲刺月薪30k的前端工程师!赶紧来领吧!


基础整理:


python篇?

Python基础知识与常用数据类型(07)

Python基础知识与常用数据类型(06)

Python基础知识与常用数据类型(05)

Python基础知识与常用数据类型(04)

Python基础知识与常用数据类型(03)

Python基础知识与常用数据类型(02)

Python基础知识与常用数据类型(01)


java篇?

java基础知识点整理(5)

java基础知识点整理(4)

java基础知识点整理(3)

java基础知识点整理(2)

java基础知识点整理(1)


其他篇?

javaScript——网页特效

CSS选择器

原来大神们都是这么玩的——不一样的html

最常用的标签(2)——标记语言html

最常用的标签(1)——标记语言html

初识编程世界——标记语言html

未完待续.............................................................

d94e36f861d366d37a6634579d2acc5e.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值