zoukankan      html  css  js  c++  java
  • 函数

    目录

      1.什么是函数
      具备某一功能的工具=>函数
      工具的使用:
      实现准备好的工具
      =>函数定义
      遇到应用场景拿来就用
      >函数的调用
      2.为什么要有函数
      1.程序的组织结构不清晰,可读性差
      2.如果要用到重复的功能,只能拷贝功能的实现代码=>代码冗余
      3.可扩展性差
      3.如何用函数
      函数的使用原则:先定义,后调用

      定义函数:
      	def 函数名(参数1,参数2,....):
      	"""文档注释"""
      	代码1
      	代码2
      	代码3
      	...
      	return 返回值
      调用函数:
      	函数名(值1,值2,....)
      

      一.函数的基本使用
      1.定义函数:申请内存空间把函数体代码保存下来,然后把内存地址绑定给函数名=>函数名=函数的内存地址

      def func():
      	print("*"*10)
      	print("hello")
      	print("*"*10)
      print(func)
      

      2.调用函数:函数名()=>函数的内存地址(),会触发函数体代码的运行
      func()
      二,定义函数的三种格式
      2.1:无参函数

      def login():
      	inp_name = input("your name:).strip()
      	inp_pwd = input("your pwd:).strip()
      	if inp_name == 'egon' and inp_pwd == '123':
      		print('login successful')
      	else:
      		print('login error')
      login()
      

      2.2,有参函数

      def max1(x,y)
      	if x > y:
      		print(x)
      	else:
      		print(y)
      max1(1,2)
      

      2.3空函数

      def func()
      	pass
      

      三.函数的调用
      return:
      函数内可以有多个return,但只要执行一次函数就会立刻结束,
      并把return后的值当做本次调用的结果返回.
      函数可以有三种形式的返回值
      1.return 值:返回的就是指本身
      2.return 值1,值2,值3: 返回的是一个元祖
      3.没有return: 默认返回的是None

      三.函数的调用
      return:
      函数内可以有多个return,但只要执行一次函数就会立刻结束,
      并把return后的值当做本次调用的结果返回.
      函数可以有三种形式的返回值
      1.return 值:返回的就是指本身
      2.return 值1,值2,值3: 返回的是一个元祖
      3.没有return: 默认返回的是None

      def max2(x,y):
      	if x > y:
      		return x
      	else:
      		return y
      
      res = max2(1,2)
      print(res*12)
      

      四,函数调用的三种格式
      4.1语句形式:单纯的调用一下函数就完了

      def sayhi(s,n):
          # s = '-'
          # n = 20
          print(s*n)
          print('hello')
          print(s*n)
      
      sayhi('*',30)
      

      4.2表达式形式

      def max2(x,y):
          if x > y:
              return x
          else:
              return y
      
      res=max2(11,22) * 12
      print(res)
      

      4.3可以把函数的调用当做值传给宁外一个函数
      print(max2(11,22))

      总结:
      函数的使用一定要分两个阶段去看:
      1,定义阶段:只检测语法,不执行代码
      2,调用阶段:执行函数体代码
      如果发生语法错误 ,定义阶段就会立马检测出来

      def func():
      	print('hello
      

      如果发生的不是语法错误,而是逻辑错误,只能在调用阶段检测到:

      如果发生的不是语法错误,而是逻辑错误,只能在调用阶段检测到:

      def func():
      	xxx
      func()
      
      示范1:
      def bar():
          print('from bar')
      
      def foo():
          print('from foo')
          bar()
      
      foo()
      示范2:
      def foo():
          print('from foo')
          bar()
      
      def bar():
          print('from bar')
      
      
      foo()
      

      一, 函数的参数分为两大类:
      1, 形参: 在定义函数是, 括号内定义的变量名, 称之为形式参数, 简称形参 = > 变量名

      def func(x, y):
      	x = 1
      	y = 2
      
      
      print(x)
      print(y)
      

      2, 实参: 在调用函数是, 括号内传入的值, 称之为实际参数, 简称实参 = > 变量值
      func(1, 2)

      二: 在python中参数的种类
      1, 位置参数:
      位置参数: 在函数定义阶段按照从左到右的顺序依次定义形参(变量名), 称之为位置形参
      特点: 必须被传值

      def func(x, y):
      	print(x, y)
      
      func(1, 2)
      func(1)  # 少一个不行
      func(1, 2, 3)  # 多一个也不行
      

      2, 位置实参: 在函数调用阶段按照从左到右的顺序依次定义实参(传入的变量值), 称之为位置实参
      特点: 按照位置传值, 一一对应
      func(1, 2, 3, 4, 5, 6)

      3, 关键字实参: 在函数调用阶段按照key:value的形式为指定的形参名传值, 该形式称之为关键字实参
      特点: 在传值时可以完全打乱顺序, 但是任然能够指名道姓的为指定形参传值

      def func(name, age):
      	print(name, age)
      
      
      func("egon", 17)
      func(age=17, name="egon")
      

      注意: 可以混用位置实参与关键字实参
      但是1, 位置实参必须放在关键字实参前面
      2, 不能为同一个形参赋值

      def func(name, age, salary):
      	print(name)
      	print(age)
      	print(salary)
      
      
      func('egon', salary=3.1, age=18)
      func('egon', salary=3.1, 18)  # 错误
      func('egon', 18, salary=3.1)  # 错误
      
      func('egon', 18, age=19, salary=3.3)
      

      默认形参: 在函数定义阶段就已经为某个形参赋值, 该形参称之为有默认值的形参, 简称默认形参
      特点: 定义阶段就已经被赋值意味着在函数调用阶段可以不用为其赋值

      def func(x, y=2):
      	print(x, y)
      
      
      func(1)
      func(1, 222)
      

      注意:
      1, 默认形参应该放在位置形参后面

      def func(y=2, x):
      	pass  # 错误
      

      默认形参的值通常应该是不可变类型

      # def func(name,hobby,hobbies=[]):
      
      #     hobbies.append(hobby)
      
      #     print("%s 的爱好是:%s" %(name,hobbies))
      
      #
      
      # func("egon",'play')
      
      # func('lili','music')
      
      # func("jack",'read')
      
      def func(name, hobby, hobbies=None):
      	if hobbies is None:
      		hobbies = []
      	hobbies.append(hobby)
      	print("%s 的爱好是:%s" % (name, hobbies))
      
      
      func("egon", 'play')
      func('lili', 'music')
      func("jack", 'read')
      

      3.默认形参的值只在函数定义阶段被赋值依次,函数定义之后的改变对默认形参没有影响

      m=333
      def func(x,y=m): # y=333
          print(x,y)
      
      m=44444
      func(1)
      
      def register(name,age,gender='male'):
          print(name)
          print(age)
          print(gender)
      
      register('egon',18,)
      register('jack',20,)
      register('tom',21,)
      register('lili',18,'female')
      
    • 相关阅读:
      在集群环境中使用 EhCache 缓存系统|RMI 集群模式
      oracle中的针对该库的表
      oracle:触发器,自治事务 trigger
      PL/SQL中查询某的时间段内所有执行的sql
      金额input框控制只能小数点后有两位的有效数字
      JS判断键盘上的上下左右键
      MySQL按照汉字的拼音排序
      JAVA经典总结
      普通for循环遍历LinkedList弊端
      EASYUI 1.4版 combobox firefox 下不支持中文检索的问题
    • 原文地址:https://www.cnblogs.com/lgh8023/p/13332791.html
    Copyright © 2011-2022 走看看