iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 函数(2)
  • 605
分享到

python 函数(2)

函数python 2023-01-31 00:01:26 605人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

一、内容回顾 1.面试题相关: 1.py2和py3的区别 2.运算符的计算 :3 or 9 and 8 3.字符串的反转 4.is和==的区别 5.v1 = (1) v2 = 1 v3 = (1,)有什么区别 v1 、v2都是数

一、内容回顾

  • 1.面试题相关:

    • 1.py2和py3的区别

    • 2.运算符的计算 :3 or 9 and 8

    • 3.字符串的反转

    • 4.is和==的区别

    • 5.v1 = (1) v2 = 1 v3 = (1,)有什么区别

      v1 、v2都是数字,v3是元组

    • 6.线上操作系统Centos

    • 7.每种数据类型,列举你了解的方法

    • 8.深浅拷贝

    • 9.文件操作,大文件如何读取内容(如50G的日志文件)

      v=open(……)

      for line in v:

      ​ print(line)

      v.close()

    • 10.一行写出:9*9乘法表

    • git流程

  • 2.函数

    方法(数据类型的)类似于函数,但不是函数 。

    严格按照顺序传参数:位置方式传参

    实际参数可以是任意类型

    return没有返回值时,默认返回None

    return的作用:1.返回值 2.终止函数的执行

    函数内部执行过程中,遇到return就终止

    return可以返回任意类型

    特殊情况:return 1,2,'alex' 表示返回的是元组,与return(1,2,'alex')相同

二、今日内容

1. 参数

1.1基本参数知识

  • 参数可以是任意个数

  • 可以是任意类型

    def func(a1,a2,a3,a4):
      print(a1,a2,a3,a4)
    
    func(2,'name',[1,2,3],False)
    

1.2 位置传参(调用函数并传入参数)(执行)

调用/执行函数的时候严格按照位置的顺序传入参数

def func(a1,a2,a3):
    print(a1,a2,a3)
    
func(66,'alex',3)

1.3 关键字传参(执行)

关键字传参就是将形参放入到实参中去使用

def func(a1,a2):
    print(a1,a2)
    
func(a1=22,a2=8)

关键字传参与位置传参是可以混合使用的:位置传入的参数要放在前面,关键字传参要放在后面,最后等于总参数个数

def func(a1,a2,a3):
    print(a1,a2,a3)
    
func(1,2,a3=3)
func(1,a2=2,a3=3)
func(a1=1,a2=2,a3=3)
func(a1=1,2,3)  # 是错误的

def func() : 自定义函数 open() 这两个为python的内置函数

​ pass len()

1.4 默认参数

def func(a1,a2,a3=9,a4=10):   # 默认参数a3=9,a4=10
    print(a1,a2,a3,a4)

func(11,22)       # 不给a3,a4传值,则a3,a4等于默认参数
func(11,22,10)
func(11,22,10,100)
func(11,22,10,a4=100)
func(11,22,a3=10,a4=100)
func(11,a2=22,a3=10,a4=100)
func(a1=11,a2=22,a3=10,a4=100)

1.5 万能参数(用于打散)

  • *args

    可以接受任意个数的位置参数,并将参数转换成元组。

    • 调用函数无*
    def func(*args):
      print(*args)
    
    func(1,2)   ==> (1,2)
    func(1,2,[12,3,4])   ==> (1,2,[12,3,4])
    func((11,22,33))   ==> ((11,22,33))  # 参数是一个元组,打印出来的效果是元组套元组。

    调用函数有*

    def func(*args):
      print(*args)
    
    func(*(11,22,33))   ==>(11,22,33)    # *是用来打散元组的,将元组中的每个元素作为参数。
    func(*[11,22,33])   ==>(11,22,33)    # *可以用来打散列表/元组 /字典/集合,只是循环内部元素

    只能用位置传参

    def func(*args):
        print(args)
    
    func(1)
    func(1,2)   # args=(1, 2)
    func((11,22,33,44,55))    # args=((11,22,33,44,55),)
    func(*(11,22,33,44,55))   # args=(11,22,33,44,55)
  • **kwargs

    可以接受任意个数的关键字参数,并见参数转换成字典

    调用函数无*

    def func(**kwargs):
      print(***kwargs)
    
    func(k=1)    **kwargs = {'k':1}
    func(k1=1,k2=3)   **kwargs = {'k1':1,'k2':3}

    调用函数有*

    def func(**kwargs):
      print(**kwargs)
    
    func(**{'k1':1,'k2':4,'k3':9})   **kwargs = {'k1':1,'k2':4,'k3':9}

    只能用关键字传参

  • *args/**kwargs综合使用:无敌 + 无敌 => 真无敌

    def func(*args,**kwargs):
        print(args,kwargs)
    
    func(1,2,3,4,5,k1=2,k5=9,k19=999)     *arg = (1,2,3,4,5) **kwargs = {'k1':2,'k5':9,'k19':999}
    func(*[1,2,3],k1=2,k5=9,k19=999)      *arg = (1,2,3) **kwargs = {'k1':2,'k5':9,'k19':999}
    func(*[1,2,3],**{'k1':1,'k2':3})      *arg = (1,2,3) **kwargs = {'k1':1,'k2':3}
    func(111,222,*[1,2,3],k11='alex',**{'k1':1,'k2':3})  
    *arg = (111,222,1,2,3)   **kwargs = {'k11':'alex','k1':1,'k2':3}

1.6 参数相关的重点

  • 定义函数

    def func(a1,a2):
      pass
    
    def func(a1,a2=None):  # 对于默认值,不可变类型随便写,如果是可变类型(有坑)。
      pass
    
    def func(*args,**kwargs):
      pass
  • 调用函数

    位置参数在前,关键字参数在后。

2. 作用域

Python文件中:

  • py文件:全局作用域

  • 函数:局部作用域

    a = 1
    def s1():
        x1 = 666
        print(x1)
        print(a)
        print(b)
    
    b = 2
    print(a)
    s1()
    a = 88888
    def s2():
        print(a,b)
        s1()
    
    s2()
  • 每个作用域中的数据只有作用域自己可以调用,如果作用域中调用的数据没有,可以调用全局作用域的

    全局作用域只能调用全局的

    在全局作用域中的函数可以互相调用(调用已经存在的),但不可以直接调用作用域中的作用域

总结

  • 1.一个函数就是一个作用域

  • 2.作用域中查找数据规则:优先在自己的作用域找数据,自己没有就去“父级”-->“父级”-->直到全局,全局没有就报错。 (作用域的嵌套)

    注意:父级作用域中的值到底是多少?

    x = 10
    def func():
        x = 9
        print(x)
    
    func()

    课上练习题

    x = 10
    def func():
        x = 9
        print(x)
        def x1():
            x = 999
            print(x)
    
    func()
    
    
    
    x = 10
    def func():
        x = 9
        print(x)
        def x1():
            x = 999
            print(x)
        x1()
    
    func()
    
    
    x = 10
    def func():
        x = 9
        print(x)
        def x1():
            x = 999
            print(x)
        print(x)
        x1()
    
    func()
    
    x = 10
    def func():
        x = 8
        print(x)
        def x1():
            x = 999
            print(x)
        x1()
        print(x)
    
    func()
    
    
    x = 10
    def func():
        x = 8
        print(x)
        def x1():
            print(x)
        x1()
        print(x)
    
    func()
    
    
    
    x = 10
    def func():
        x = 8
        print(x)
        def x1():
            print(x)
        x = 9
        x1()
        x = 10
        print(x)
    
    func()
    
    x = 10
    def func():
        x = 8
        print(x)
        def x1():
            print(x)    
        x1()
        x = 9
        x1()
        x = 10
        print(x)
    
    func()
  • 3.子作用域中只能只能找到父级中的值,默认无法重新为父级的变量进行赋值。

    • 不能进行赋值,只能对可变类型进行内部修改

      # #####################
      name = 'oldboy'
      def func():
          name = 'alex' # 在自己作用域再创建一个这样的值。
          print(name)
      func()
      print(name)
      
      
      # #####################
      name = [1,2,43]
      def func():
          name.append(999)
          print(name)
      func()
      print(name)
    • 如果非要对全局的变量进行赋值需要加global(强制赋值)

      #示例一
      name = "老男孩“
      def func():
          global name
          name = 'alex'
      func()
      print name
      
      # 示例二
      name = ["老男孩",'alex']
      def func():
          global name
          name = '我'
      func()
      print(name)
      
      # 示例三
      name = "老男孩"
      def func():
          name = 'alex'
          def inner():
              global name
              name = 999
          inner()
          print(name)
      func()
      print(name)
      
    • 对父级的变量赋值用nonlocal,先找到父级的变量再进行赋值 (强制赋值)

      name = "老男孩"
      def func():
          name = 'alex'
          def inner():
              nonlocal name # 找到上一级的name
              name = 999
          inner()
          print(name)
      func()
      print(name)
  • 补充:全局变量必须全部要大写

USER_LIST = [11,22,3]

def func():
    name = 'asdf'
    USER_LIST.append(12)
    USER_LIST.append(name)

func()
print(USER_LIST)

--结束END--

本文标题: python 函数(2)

本文链接: https://www.lsjlt.com/news/182010.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 函数(2)
    一、内容回顾 1.面试题相关: 1.py2和py3的区别 2.运算符的计算 :3 or 9 and 8 3.字符串的反转 4.is和==的区别 5.v1 = (1) v2 = 1 v3 = (1,)有什么区别 v1 、v2都是数...
    99+
    2023-01-31
    函数 python
  • python 之 函数 2
    5.36 命名关键字 什么是命名关键字参数? 格式:在*后面参数都是命名关键字参数 特点: 1 必须被传值 2 约束函数的调用者必须按照key=value的形式传值 3 约束函数的调用者必须用我们指定的key名 def foo(x,y,...
    99+
    2023-01-31
    函数 python
  • Python-2 eval函数
    x = 1result = "x+1"result = eval(result)print(result)》》2 Python3中字符串不能计算结果,eval函数将字符串当成有效Python表达式来求值,并返回计算结果。 与之对应的repr...
    99+
    2023-01-31
    函数 Python eval
  • python内置函数2-bytearra
    Help on class bytearray in module __builtin__:class bytearray(object) |  bytearray(iterable_of_ints) -> bytearray. | ...
    99+
    2023-01-31
    函数 python bytearra
  • python的函数学习2
    用来存放名字的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间。 1 比如执行test.py: 2 3 python test.py 4 1、python解释器先启动,因而首先加载内置名称空间 5 2、执行test.p...
    99+
    2023-01-30
    函数 python
  • 函数(2)
    6. 函数的声明和定义 6.1 函数声明: 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数 声明决定不了。 2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。 3. 函数的声明一般要放在头文件...
    99+
    2023-09-06
    c语言 学习 开发语言
  • 代码详解Python的函数基础(2)
    目录1.函数参数2.递归函数总结1.函数参数 # 1.位置参数:调用函数时,传入的值需要按照位置顺序传入 # 实例:求x的n次方 def xPowN(x,n): # 传...
    99+
    2024-04-02
  • 2-3 T-SQL函数
      2-3 T-SQL函数 学习系统函数、行集函数和Ranking函数;重点掌握字符串函数、日期时间函数和数学函数的使用参数以及使用技巧 重点掌握用户定义的标量函数以及自定义函数的执行方法 掌握用户定义的内嵌表值函数以及与用户定义的标量函...
    99+
    2023-01-31
    函数 SQL
  • Python 内置函数详解 (2) 逻辑运算
    近期在外旅游,本篇是出发编辑的,准备定时发布用,不完整,旅游回来后再补充。 Python 内置函数 Python3.11共有75个内置函数,其来历和分类请参考:Python 新版本有75个内置函数,你不会不知道吧_Hann Yang的博客...
    99+
    2023-09-20
    python
  • Python数学基础2
    1.Python中使用对数函数 log(x)就是数学中的ln(x),log10(x)就是数学中的lg(x)。 import numpy as np#对XY取lnX = np.log(X) # 对X,...
    99+
    2023-10-20
    python numpy
  • 51. Python 数据处理(2)
    1.Python 修改excel文件import xlrd import xlutils.copy excelr = xlrd.open_workbook("hello.xlsx") excelw = xlutils.copy.copy(e...
    99+
    2023-01-31
    数据处理 Python
  • Python(2)
    一、python是强类型语言:1、两个对象比较:(1)、身份(内存地址):两个对象的引用是否相同。 id(a)==id(b)或者a is b (2)、值:两个对象的数据是否相等。 a==b(3)、类型:两个对象的类型是否相同。 type(a...
    99+
    2023-01-31
    Python
  • Python学习笔记(11-2):matplotlib绘图——图形绘制函数
    Python学习笔记(11-2):matplotlib绘图——图形绘制函数 一、设置参数的预备知识1、常见的绘图参数(1)曲线设置参数(2)数据点标记(marker)的设置参数(3)其他参数...
    99+
    2023-10-26
    python matplotlib 学习
  • 2 python 四位数整数补零
    1 数字前面补零 n = 123 n = "%04d" % n print n 0123 2 字符串前面补零 str = "123" str = str.zfill(5) print str 00123 ...
    99+
    2023-01-31
    整数 四位 python
  • day 16 - 2 内置函数(二)练习
    内置函数(二)练习 1、用 map 来处理字符串列表,把列表中所有人都变成 sb,比方 alex_sbname=['alex','wupeiqi','yuanhao','nezha']   name=['alex','wupeiqi',...
    99+
    2023-01-30
    函数 day
  • zero python.2
    1.使用函数 2.装饰器 3.异常处理 4.socket 1.使用函数  给函数传递参数时,可以灵活传递实参数量。形参在定义时,使用到列表、字典。# 定义函数 def f (hostip, port='52161'):     print(...
    99+
    2023-01-31
    python
  • Django1.7+python 2.
    配置好virtualenv 和virtualenvwrapper后,使用pycharm创建新项目。之后要面临的问题就来了,之前一直使用的是sqlite作为开发数据库进行学习,按照之前看教程的原则,好像就是说开发环境要和生产环境尽量的一致,...
    99+
    2023-01-31
    python
  • C++常用字符串函数大全(2)
    目录1、cstring.h常用函数介绍2、strlen3、strcat4、strncat5、strcpy6、strncpy7、memset8、memcpy9、strcmp10、str...
    99+
    2024-04-02
  • 2 . python Collectio
    nametuple() 是具有命名字段的元组的工厂函数命名元组为元组中每个位置赋予含义,并允许更具可读性的自编写代码 它们可以在任何使用常规元组的地方使用,并且他们添加了按名称而不是位置索引访问字段的功能。用法:collections.na...
    99+
    2023-01-31
    python Collectio
  • selenium 2 + python
    在使用selenium 2的时候,经常会碰到打开一个页面后新页面以新窗口打开,因为脱离当前窗口需要重新定位窗口,可以用以下方法定位到需要的窗口。#父窗口是0 browser.switch_to_window(browser.window_h...
    99+
    2023-01-31
    selenium python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作