大数据分析02 基础语法差异

Python基础类型与Go、PHP的差异

1. 整数(int
  • Python
    • 动态类型,无大小限制(受限于内存)。
    • 示例:num = 12345678901234567890
    • 可以直接进行二进制、八进制、十六进制转换(bin()oct()hex())。
  • Go
    • 静态类型,有多种整数类型(int8int16int32int64),大小固定。

    • 示例:

      go 复制代码
      var num int64 = 1234567890123456789
    • 需要显式转换类型,如int64(num)

  • PHP
    • 动态类型,但整数大小受限于平台(32位或64位)。
    • 示例:$num = 1234567890123456789;(超出范围时会自动转为浮点数)。
    • 没有内置的二进制、八进制、十六进制转换函数,需手动实现。
2. 浮点数(float
  • Python
    • 动态类型,精度较高(双精度浮点数)。
    • 示例:pi = 3.141592653589793
    • 支持科学计数法(如1.23e-10)。
  • Go
    • 静态类型,有float32float64两种类型。

    • 示例:

      go 复制代码
      var pi float64 = 3.141592653589793
    • 需要显式指定类型,精度固定。

  • PHP
    • 动态类型,浮点数精度与平台相关(通常是双精度)。
    • 示例:$pi = 3.141592653589793;
    • 支持科学计数法,但精度可能不如Python。
3. 复数(complex
  • Python
    • 内置支持,以jJ为后缀。
    • 示例:c = 3 + 4j
    • 支持复数运算(加、减、乘、除、共轭等)。
  • Go
    • 不支持复数类型,需使用第三方库或手动实现。
  • PHP
    • 不支持复数类型,需使用扩展库(如Math_Complex)。
4. 布尔值(bool
  • Python
    • TrueFalse,布尔值是int的子类。
    • 示例:is_valid = True
    • 空值、零值、空字符串等会被视为False
  • Go
    • truefalse,布尔类型与其他类型严格区分。

    • 示例:

      go 复制代码
      var isValid bool = true
    • 不支持隐式类型转换。

  • PHP
    • truefalse,布尔类型与其他类型有隐式转换。
    • 示例:$isValid = true;
    • 空字符串、零值、null等会被视为false
5. 字符串(str
  • Python
    • 不可变序列,支持多行字符串(用三引号"""''')。

    • 示例:

      python 复制代码
      s = "Hello, world!"
      multi_line = """This is a
      multi-line string."""
    • 支持字符串切片、格式化(f-stringstr.format())。

    • 前缀r表示原始字符串(不转义)。

  • Go
    • 不可变序列,字符串操作较为繁琐。

    • 示例:

      go 复制代码
      s := "Hello, world!"
    • 不支持多行字符串,需手动拼接。

    • 字符串操作需通过strings包实现。

  • PHP
    • 可变序列,支持多种字符串定义方式(单引号、双引号、heredocnowdoc)。

    • 示例:

      php 复制代码
      $s = 'Hello, world!';
      $multi_line = <<<EOT
      This is a
      multi-line string.
      EOT;
    • 支持变量插值(双引号中可直接插入变量)。

6. 切片(slice
  • Python

    • 切片操作非常灵活,支持负索引、步长等。

    • 示例:

      python 复制代码
      lst = [0, 1, 2, 3, 4]
      print(lst[1:4]) # 输出 [1, 2, 3]
      print(lst[::-1]) # 输出 [4, 3, 2, 1, 0]
  • Go

    • 切片是数组的动态视图,但操作相对复杂。

    • 示例:

      go 复制代码
      arr := [5]int{0, 1, 2, 3, 4}
      slice := arr[1:4] // 输出 [1 2 3]
    • 不支持负索引和步长。

  • PHP

    • 不支持切片操作,需手动实现(如使用array_slice())。

    • 示例:

      php 复制代码
      $arr = [0, 1, 2, 3, 4];
      $slice = array_slice($arr, 1, 3); // 输出 [1, 2, 3]
7. 幂运算(**
  • Python

    • 使用**进行幂运算。
    • 示例:result = 2 ** 3(结果为8)。
  • Go

    • 不支持**运算符,需使用math.Pow()函数。

    • 示例:

      go 复制代码
      result := math.Pow(2, 3) // 结果为8
  • PHP

    • 使用pow()函数进行幂运算。
    • 示例:$result = pow(2, 3);(结果为8)。
8. 身份运算(is
  • Python

    • 使用is判断两个对象是否是同一个对象。

    • 示例:

      python 复制代码
      a = [1, 2, 3]
      b = a
      print(a is b) # 输出 True
  • Go

    • 不支持is运算符,需通过比较指针或地址来判断。
  • PHP

    • 不支持is运算符,需通过===比较值和类型。
9. 控制流(range()
  • Python

    • range()用于生成序列,常用于循环。

    • 示例:

      python 复制代码
      for i in range(1, 5):
          print(i) # 输出 1, 2, 3, 4
  • Go

    • 没有range(),需手动实现循环。

    • 示例:

      go 复制代码
      for i := 1; i < 5; i++ {
          fmt.Println(i) // 输出 1, 2, 3, 4
      }
  • PHP

    • 不支持range(),需手动实现循环。

    • 示例:

      php 复制代码
      for ($i = 1; $i < 5; $i++) {
          echo $i; // 输出 1, 2, 3, 4
      }

总结

  • Python:动态类型,语法简洁,内置功能丰富,适合快速开发。
  • Go:静态类型,性能高,适合大规模并发和系统编程。
  • PHP:动态类型,主要用于Web开发,语法灵活但类型系统较弱。

Python、Go 和 PHP 在文件操作中的使用区别:

Python 文件操作

  • 打开文件 :使用 open() 函数,支持多种模式(如 'r' 读取、'w' 写入、'a' 追加等)。推荐使用 with 语句,可自动关闭文件。

    python 复制代码
    with open('example.txt', 'r') as file:
        content = file.read()
  • 读取文件 :提供 read()(读取全部内容)、readline()(读取一行)、readlines()(读取所有行)等方法。

  • 写入文件 :使用 write()writelines() 方法。写入模式 'w' 会覆盖文件,追加模式 'a' 会在文件末尾添加内容。

  • 关闭文件 :使用 close() 方法,但 with 语句会自动处理关闭操作。

  • 文件指针操作 :使用 tell() 获取当前位置,seek(offset, whence) 移动指针。

Go 文件操作

  • 打开文件 :使用 os.Open()os.OpenFile()os.Open() 默认为只读模式,os.OpenFile() 可指定模式和权限。

    go 复制代码
    file, err := os.Open("example.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()
  • 读取文件 :可使用 file.Read()bufio.NewReader(file) 等方式读取内容。

  • 写入文件 :使用 file.Write()file.WriteString(),也可通过 bufio.NewWriter(file) 进行缓冲写入。

  • 关闭文件 :通过 file.Close() 关闭文件,通常与 defer 结合使用。

  • 文件管理 :提供 os.Remove() 删除文件、os.Rename() 重命名或移动文件。

PHP 文件操作

  • 打开文件 :使用 fopen() 函数,支持多种模式(如 'r''w''a' 等)。

    php 复制代码
    $file = fopen("example.txt", "r");
    if ($file) {
        echo "File opened successfully.";
        fclose($file);
    }
  • 读取文件 :可使用 fread()fgets()(逐行读取)等函数。

  • 写入文件 :使用 fwrite()file_put_contents()(后者支持追加和错误处理)。

    php 复制代码
    file_put_contents("example.txt", "This is some text.", FILE_APPEND);
  • 关闭文件 :通过 fclose() 关闭文件。

  • 文件管理 :提供 unlink() 删除文件、rename() 重命名或移动文件。

总结

  • Python :文件操作功能丰富,语法简洁,推荐使用 with 语句自动管理文件关闭。
  • Go :通过 os 包提供底层文件操作,支持错误处理和文件权限管理,适合系统级文件操作。
  • PHP:文件操作与 Web 开发紧密结合,提供多种函数支持文件读写和管理,适合 Web 环境下的文件操作。
相关推荐
hello_ejb31 小时前
聊聊Spring AI Alibaba的SentenceSplitter
人工智能·python·spring
新辞旧梦2 小时前
企业微信自建消息推送应用
服务器·python·企业微信
虎头金猫2 小时前
如何解决 403 错误:请求被拒绝,无法连接到服务器
运维·服务器·python·ubuntu·chatgpt·centos·bug
kngines4 小时前
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.4 数据故事化呈现(报告结构设计/业务价值提炼)
postgresql·数据分析·趋势预测模型·移动平均·cpa·生存分析模型·归因模型
QFIUNE4 小时前
数据分析之药物-基因-代谢物
数据挖掘·数据分析
dqsh065 小时前
树莓派5+Ubuntu24.04 LTS串口通信 保姆级教程
人工智能·python·物联网·ubuntu·机器人
sunshineine6 小时前
jupyter notebook运行简单程序
linux·windows·python
方博士AI机器人7 小时前
Python 3.x 内置装饰器 (4) - @dataclass
开发语言·python
万能程序员-传康Kk7 小时前
中国邮政物流管理系统(Django+mysql)
python·mysql·django
Logintern097 小时前
【每天学习一点点】使用Python的pathlib模块分割文件路径
开发语言·python·学习